Redis List

原创
2016/09/30 12:52
阅读数 92

List

列表,左边为表头,右边为表尾,元素可重复插入,同时保存元素添加的顺序,可以双向操作,操作支持原子性,同时要阻塞功能,注意没有 contains 功能,就算有也是通过遍历判断则效率差。

 

1、Bxxx 阻塞(blocking)操作

>blpop key [key ...] timeout

阻塞式获取指定key的表头元素同时删除该元素,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止。当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。timeout 为0 表示永不超时,单位秒。

 

>brpop key [key ...] timeout

和 blpop 功能类似,区别在于从表尾操作。

 

>brpoplpush source destination timeout

和 rpoplpush 功能类似,区别在于该操作是阻塞式操作,如果队列没有元素则会等待阻塞。

 

2、Lxxx 从队列左边(表头操作)

>lindex key index

返回列表 key 中,下标为 index 的元素。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

 

>linsert key BEFORE|AFTER pivot value

将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。当 pivot 不存在于列表 key 时,不执行任何操作。当 key 不存在时, key 被视为空列表,不执行任何操作。注意表头是最左边也就是前面。

 

>llen key

返回列表 key 的长度,空列表返回0;

 

>lpop key

移除并返回列表 key 的头元素,原子操作,key不存在时返回null。

 

>lpush key value [value ...]

将一个或多个值 value 插入到列表 key 的表头(左边是表头)。如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头。相当于从左到右依次执行 lpush key value,所以最后的value是在列表的最左边(表头)。

 

>lpushx key value

将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。和 LPUSH 命令相反,当 key 不存在时, LPUSHX (eXist)命令什么也不做。

 

>lrange key start end

返回列表 key 中指定区间内的元素,区间以偏移量 start 和 end 指定,start从0开始,start和end都包含在内。

 

>lrem key count value

根据参数 count 的值,移除列表中与参数 value 相等的元素。

count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。

count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。

count = 0 : 移除表中所有与 value 相等的值。

 

>lset key index value

将列表 key 下标为 index 的元素的值设置为 value. index 不能超过现有列表长度的最大值。

 

>ltrim key start end

对列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除,同样这里的区间是包括start和end的。

 

 

3、Rxxx 从队列右边(表尾操作)

>rpop key

与lpop 顺序相反,从队列的右边(表尾)删除元素并返回被删除的元素,如果队列为空,则返回null.

 

>rpoplpush source destination

原子性操作,将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。同时将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

 

>rpush key value [value ...]

将一个或多个值 value 插入到列表 key 的表尾(左边是表头)。如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾。相当于从左到右依次执行 rpush key value.所以最后的value是在列表的最右端(表尾)。

 

>rpushx key value

将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。和 rpush 命令相反,当 key 不存在时, rpushx (eXist)命令什么也不做。

 

 

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部