Redis 笔记(三)—— LIST 常用命令
命令 | 用例和描述 |
---|---|
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) # 等待时间