文章目录
1. lpush
lpush list item1 item2...
:将一个或多个元素推入给定列表的左端
2. rpush
rpush list item1 item2...
:将一个或多个元素推入给定列表的左端
3. lpushx
lpush list item1 item2..
: 在列表不为空时,才会推进元素到列表左端,可以一次推进多个元素
4. rpushx
rpush list item1 item2..
: 在列表不为空时,才会推进元素到列表右端,可以一次推进多个元素
5. lpop
lpop list
: 弹出列表最左端的元素
6. rpop
rpop list
: 弹出列表最右端的元素
7. rpoplpush
rpoplpush list1 list2
: 将list1列表最右端的元素弹出推进到list2列表左端,返回被弹出的元素作为结果
- 源列表和目标列表设置为同一个列表,在这种情况下,RPOPLPUSH命令的效果相当于将列表最右端的元素变成列表最左端的元素
- 源列表非空,但是目标列表为空,那么RPOPLPUSH命令将正常执行弹出操作和推入操作
- 源列表空,但是目标列表非空,那么RPOPLPUSH命令只返回一个空值表示命令执行失败
8. llen
llen list
: 获取列表的长度
9. lindex
lindex list index
: 获取指定索引上的元素
超出索引范围则返回nil
10. lrange
lrange listt start end
: 获取[start,end[位置上面的元素
索引超出范围:
- start end都超出范围
- start end中的1个超出范围
11. lset
lset list index value
:为列表的指定索引设置新元素
12. linsert
linsert list before/after privot value
: 在元素privot前面或者后面插入新的元素value
13. ltrim
ltrim list start end
: 删除[start,end]外的所有列表元素
ltrim也可以处理负数索引
14. lrem
lrem list count element
:移除count个值为element的元素
- 如果count参数的值等于0,那么LREM命令将移除列表中包含的所有指定元素
- 如果count参数的值大于0,那么LREM命令将从列表的左端开始向右进行检查,并移除最先发现的count个指定元素(左->右检查)
- 如果count参数的值小于0,那么LREM命令将从列表的右端开始向左进行检查,并移除最先发现的abs(count)个指定元素(右->左检查)
15. blpop/brpop
blpop list1 list2... timeout
:带有阻塞功能的左端弹出操作,它接受任意多个列表以及一个秒级精度的超时时限作为参数
- 非阻塞情况
- 阻塞情况
- 解除阻塞状态
如果在同一时间,有多个客户端因为同一个列表而被阻塞,那么当导致阻塞的列表变为非空时,服务器将按照“先阻塞先服务”的规则,依次为被阻塞的各个客户端弹出列表元素
example:
有A B C D4个客户端,A B C依次执行了blpop list2 15
这条命令,list2不存在,之后再客户端D往list2中添加2个元素,可以解除阻塞的是客户端A B,C依旧阻塞,因为A B先执行命令
brpop除了是从列表右端弹出元素以外,其他性质和blpop一样
16. brpoplpush
brpoplpush list1 list2 tiemout
:BRPOPLPUSH命令是RPOPLPUSH命令的阻塞版本
-
如果源列表非空,那么BRPOPLPUSH命令的行为就和RPOPLPUSH命令的行为一样
-
如果源列表为空,那么BRPOPLPUSH命令将阻塞执行该命令的客户端,然后在给定的时限内等待可弹出的元素出现,或者等待时间超过给定时限为止