Redis 中,list 数据结构是按照插入顺序的字符串链表,和数据结构中的普通链表一样,可以在其头部(left)和尾部(right)添加新的元素。
list 在插入时,如果该键不存在,redis 将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库删除,list 中可以包含最大元素数是 232-1 个元素(4294967295,大约40多亿个元素)。从元素插入和删除的效率来看,如果我们是在链表的两头插入或删除元素时,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成,然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。
Redis 列表命令
可用版本 | 命令及描述 |
---|---|
>=2.0.0 |
BLPOP 命令是 LPOP 命令的阻塞版本,当指定列表内没有任何元素可供获取时,连接将被 BLPOP 命令阻塞,直到等待超时或存在可获取元素为止。 |
>=2.0.0 |
BRPOP 命令是 RPOP 命令的阻塞版本,当指定列表内没有任何元素可供获取时,连接将被 BRPOP 命令阻塞,直到等待超时或存在可获取元素为止。 |
>=2.2.0 |
BRPOPLPUSH source destination timeout BRPOPLPUSH 是 RPOPLPUSH 的阻塞版本,当指定列表 source 不为空时,BRPOPLPUSH 的表现和 RPOPLPUSH 一样。 |
>=1.0.0 |
返回列表 key 中,下标为 index 的元素。 |
>=2.2.0 |
LINSERT key BEFORE|AFTER pivot value 表示将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。 |
>=1.0.0 |
返回指定列表的长度。 |
>=1.0.0 |
表示移除并返回列表 key 的头元素。 |
>=1.0.0 |
表示将一个或多个值 value 插入到列表 key 的表头。 |
>=2.2.0 |
表示将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。 |
>=1.0.0 |
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。 |
>=1.0.0 |
表示根据参数 count 的值,移除列表中与参数 value 相等的元素。 |
>=1.0.0 |
将列表 key 下标为 index 的元素的值设置为 value。 |
>=1.0.0 |
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 |
>=1.0.0 |
表示移除并返回列表 key 的尾元素。 |
>=1.2.0 |
在一个原子时间内,执行两个动作,一个是将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端;另一个是将 source 弹出的元素插入到列表 destination,作为 destination 列表的的头元素。 |
>=1.0.0 |
表示将一个或多个值 value 插入到列表 key 的表尾。 |
>=2.2.0 |
表示将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。 |