常用命令
命令
用例和描述
RPUSH
RPUSH key value [value ...] —— 将一个或多个值推入列表的右端
LPUSH
LPUSH key value [value ...] —— 将一个或多个值推入列表的左端
RPOP
RPOP key —— 移除并返回列表最右端的元素
LPOP
LPOP key —— 移除并返回列表最左端的元素
LINDEX
LINDEX key offset —— 返回列表中偏移量为 offset 的元素
LRANGE
LRANGE key start end —— 返回列表从 start 到 end 偏移量范围内的元素(包含 start, end)
LTRIM
LTRIM key start end —— 对列表进行修剪,只保留从 start 到 end 的元素(包含 start, end)
例子 :
127.0.0.1:6379> rpush list-key last
(integer) 1
127.0.0.1:6379> lpush list-key first
(integer) 2
127.0.0.1:6379> rpush list-key "new last"
(integer) 3
127.0.0.1:6379> lrange list-key 0 -1
1) "first"
2) "last"
3) "new last"
127.0.0.1:6379> lpop list-key
"first"
127.0.0.1:6379> lpop list-key
"last"
127.0.0.1:6379> lrange list-key 0 -1
1) "new last"
127.0.0.1:6379> rpush list-key a b c
(integer) 4
127.0.0.1:6379> lrange list-key 0 -1
1) "new last"
2) "a"
3) "b"
4) "c"
127.0.0.1:6379> ltrim list-key 2 -1
OK
127.0.0.1:6379> lrange list-key 0 -1
1) "b"
2) "c"
阻塞式的列表弹出命令以及在列表之间移动元素的命令
命令
用例和描述
BLPOP
BLPOP key [key ...] timeout —— 从第一个非空列表中弹出最左端的元素,或者在 timeout 秒之内阻塞并等待可弹出的元素出现
BRPOP
BRPOP key [key ...] timeout —— 基本同 BLPOP,只是是从最右端弹出
RPOPLPUSH
RPOPLPUSH source-key dest-key —— 从 source-key 列表中弹出最右端元素插入 dest-key 最左端,并返回此元素
BRPOPLPUSH
BRPOPLPUSH source-key dest-key timeout —— 从 source-key 列表弹出最右端的元素,插入到 dest-key 的最左端,并返回此元素,如果 source-key 为空,那么在 timeout 秒之内阻塞并等待可弹出的元素出现
例子:
127.0.0.1:6379> rpush list item1
(integer) 1
127.0.0.1:6379> rpush list item2
(integer) 2
127.0.0.1:6379> rpush list2 item3
(integer) 1
127.0.0.1:6379> brpoplpush list2 list 1
"item3"
127.0.0.1:6379> brpoplpush list2 list 1
(nil)
(1.01s)
127.0.0.1:6379> lrange list 0 -1
1) "item3"
2) "item1"
3) "item2"
127.0.0.1:6379> lrange list2 0 -1
(empty list or set)
127.0.0.1:6379> brpoplpush list list2 1
"item2"
# BLPOP 会从左到右检查列表,并对最先遇到的非空列表执行弹出操作
127.0.0.1:6379> blpop list list2 1
1) "list" # 弹出元素所属的列表
2) "item3" # 弹出的元素
127.0.0.1:6379> blpop list list2 1
1) "list"
2) "item1"
127.0.0.1:6379> blpop list list2 1
1) "list2"
2) "item2"
127.0.0.1:6379> blpop list list2 1
(nil) # 结果
(1.04s) # 等待时间