redis list
- 官方文档地址:https://redis.io/commands/?group=list
- redis客户端查询命令:
help @list
list
- Redis中的List类型是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。
- 特点是:有序、元素可以重复、插入和删除快、查询速度一般。
- 常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等。
BLMOVE
-
从list中弹出一个元素,将其推入另一个list并返回。阻塞,直到元素可用为止。如果最后一个元素被移动,则删除list。
-
语法:
BLMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT> timeout
BLMPOP
-
从多个list中弹出第一个元素。阻塞,直到元素可用为止。如果弹出最后一个元素,则删除list。
-
语法:
BLMPOP timeout numkeys key [key ...] <LEFT | RIGHT> [COUNT count]
BLPOP
-
移除并返回list中的第一个元素。阻塞,直到元素可用为止。如果弹出最后一个元素,则删除list。
-
语法:
BLPOP key [key ...] timeout
- 示例:
redis> DEL list1 list2
(integer) 0
redis> RPUSH list1 a b c
(integer) 3
redis> BLPOP list1 list2 0
1) "list1"
2) "a"
BRPOP
-
移除并返回list中的最后一个元素。阻塞,直到元素可用为止。如果弹出最后一个元素,则删除list。
-
语法:
BRPOP key [key ...] timeout
- 示例:
redis> DEL list1 list2
(integer) 0
redis> RPUSH list1 a b c
(integer) 3
redis> BRPOP list1 list2 0
1) "list1"
2) "c"
BRPOPLPUSH
-
从list中弹出一个元素,将其推入另一个list并返回。阻塞,直到元素可用为止。如果弹出最后一个元素,则删除list。
-
语法:
BRPOPLPUSH source destination timeout
LINDEX
-
根据索引从list中返回一个元素。
-
语法:
LINDEX key index
- 示例:
redis> LPUSH mylist "World"
(integer) 1
redis> LPUSH mylist "Hello"
(integer) 2
redis> LINDEX mylist 0
"Hello"
redis> LINDEX mylist -1
"World"
redis> LINDEX mylist 3
(nil)
LINSERT
-
将一个元素插入list中另一个元素之前或之后。
-
语法:
LINSERT key <BEFORE | AFTER> pivot element
- 示例:
redis> RPUSH mylist "Hello"
(integer) 1
redis> RPUSH mylist "World"
(integer) 2
redis> LINSERT mylist BEFORE "World" "There"
(integer) 3
redis> LRANGE mylist 0 -1
1) "Hello"
2) "There"
3) "World"
LLEN
-
Returns the length of a list.
-
返回list的长度。
-
语法:
LLEN key
- 示例:
redis> LPUSH mylist "World"
(integer) 1
redis> LPUSH mylist "Hello"
(integer) 2
redis> LLEN mylist
(integer) 2
LMOVE
-
从一个list中弹出元素并将其压入另一个list后返回该元素。如果最后一个元素被移动,则删除list。
-
语法:
LMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT>
- 示例:
redis> RPUSH mylist "one"
(integer) 1
redis> RPUSH mylist "two"
(integer) 2
redis> RPUSH mylist "three"
(integer) 3
redis> LMOVE mylist myotherlist RIGHT LEFT
"three"
redis> LMOVE mylist myotherlist LEFT RIGHT
"one"
redis> LRANGE mylist 0 -1
1) "two"
redis> LRANGE myotherlist 0 -1
1) "three"
2) "one"
LMPOP
-
从list中删除多个元素后返回它们。如果弹出最后一个元素,则删除list。
-
语法:
LMPOP numkeys key [key ...] <LEFT | RIGHT> [COUNT count]
- 示例:
redis> LMPOP 2 non1 non2 LEFT COUNT 10
(error) object of type 'NoneType' has no len()
redis> LPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
redis> LMPOP 1 mylist LEFT
1) "mylist"
2) 1) "five"
redis> LRANGE mylist 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
redis> LMPOP 1 mylist RIGHT COUNT 10
1) "mylist"
2) 1) "one"
2) "two"
3) "three"
4) "four"
redis> LPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
redis> LPUSH mylist2 "a" "b" "c" "d" "e"
(integer) 5
redis> LMPOP 2 mylist mylist2 right count 3
1) "mylist"
2) 1) "one"
2) "two"
3) "three"
redis> LRANGE mylist 0 -1
1) "five"
2) "four"
redis> LMPOP 2 mylist mylist2 right count 5
1) "mylist"
2) 1) "four"
2) "five"
redis> LMPOP 2 mylist mylist2 right count 10
1) "mylist2"
2) 1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
redis> EXISTS mylist mylist2
(integer) 0
LPOP
-
Returns the first elements in a list after removing it. Deletes the list if the last element was popped.
-
返回删除list后的第一个元素。如果弹出最后一个元素,则删除list。
-
语法:
LPOP key [count]
- 示例:
redis> RPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
redis> LPOP mylist
"one"
redis> LPOP mylist 2
1) "two"
2) "three"
redis> LRANGE mylist 0 -1
1) "four"
2) "five"
LPOS
- 返回list中匹配元素的索引。
- 语法:
LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]
- 示例:
redis> RPUSH mylist a b c d 1 2 3 4 3 3 3
(integer) 11
redis> LPOS mylist 3
(integer) 6
redis> LPOS mylist 3 COUNT 0 RANK 2
1) (integer) 8
2) (integer) 9
3) (integer) 10
LPUSH
-
将一个或多个元素添加到list中。如果键不存在,则创建该键。
-
语法:
LPUSH key element [element ...]
- 示例:
redis> LPUSH mylist "world"
(integer) 1
redis> LPUSH mylist "hello"
(integer) 2
redis> LRANGE mylist 0 -1
1) "hello"
2) "world"
LPUSHX
-
仅当list存在时,将一个或多个元素添加到list中。
-
语法:
LPUSHX key element [element ...]
- 示例:
redis> LPUSH mylist "World"
(integer) 1
redis> LPUSHX mylist "Hello"
(integer) 2
redis> LPUSHX myotherlist "Hello"
(integer) 0
redis> LRANGE mylist 0 -1
1) "Hello"
2) "World"
redis> LRANGE myotherlist 0 -1
(empty array)
LRANGE
-
返回list中的元素范围。
-
语法:
LRANGE key start stop
- 示例:
redis> RPUSH mylist "one"
(integer) 1
redis> RPUSH mylist "two"
(integer) 2
redis> RPUSH mylist "three"
(integer) 3
redis> LRANGE mylist 0 0
1) "one"
redis> LRANGE mylist -3 2
1) "one"
2) "two"
3) "three"
redis> LRANGE mylist -100 100
1) "one"
2) "two"
3) "three"
redis> LRANGE mylist 5 10
(empty array)
LREM
-
从list中删除元素。如果最后一个元素被删除,则删除list。
-
语法:
LREM key count element
- 示例:
redis> RPUSH mylist "hello"
(integer) 1
redis> RPUSH mylist "hello"
(integer) 2
redis> RPUSH mylist "foo"
(integer) 3
redis> RPUSH mylist "hello"
(integer) 4
redis> LREM mylist -2 "hello"
(integer) 2
redis> LRANGE mylist 0 -1
1) "hello"
2) "foo"
LSET
-
根据list中元素的索引设置元素的值。
-
语法:
LSET key index element
- 示例:
redis> RPUSH mylist "one"
(integer) 1
redis> RPUSH mylist "two"
(integer) 2
redis> RPUSH mylist "three"
(integer) 3
redis> LSET mylist 0 "four"
"OK"
redis> LSET mylist -2 "five"
"OK"
redis> LRANGE mylist 0 -1
1) "four"
2) "five"
3) "three"
LTRIM
-
从list两端移除元素。如果所有元素都被修剪,则删除list。
-
语法:
LTRIM key start stop
- 示例:
redis> RPUSH mylist "one"
(integer) 1
redis> RPUSH mylist "two"
(integer) 2
redis> RPUSH mylist "three"
(integer) 3
redis> LTRIM mylist 1 -1
"OK"
redis> LRANGE mylist 0 -1
1) "two"
2) "three"
RPOP
-
返回并删除list的最后一个元素。如果弹出最后一个元素,则删除list。
-
语法:
RPOP key [count]
- 示例:
redis> RPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
redis> RPOP mylist
"five"
redis> RPOP mylist 2
1) "four"
2) "three"
redis> LRANGE mylist 0 -1
1) "one"
2) "two"
RPOPLPUSH
-
将list的最后一个元素移除并压入另一个list后返回该元素。如果弹出最后一个元素,则删除list。
-
语法:
RPOPLPUSH source destination
- 示例:
redis> RPUSH mylist "one"
(integer) 1
redis> RPUSH mylist "two"
(integer) 2
redis> RPUSH mylist "three"
(integer) 3
redis> RPOPLPUSH mylist myotherlist
"three"
redis> LRANGE mylist 0 -1
1) "one"
2) "two"
redis> LRANGE myotherlist 0 -1
1) "three"
RPUSH
-
将一个或多个元素附加到list中。如果键不存在,则创建该键。
-
语法:
RPUSH key element [element ...]
- 示例:
redis> RPUSH mylist "hello"
(integer) 1
redis> RPUSH mylist "world"
(integer) 2
redis> LRANGE mylist 0 -1
1) "hello"
2) "world"
RPUSHX
-
仅当list存在时才将元素追加到list。
-
语法:
RPUSHX key element [element ...]
- 示例:
redis> RPUSH mylist "Hello"
(integer) 1
redis> RPUSHX mylist "World"
(integer) 2
redis> RPUSHX myotherlist "World"
(integer) 0
redis> LRANGE mylist 0 -1
1) "Hello"
2) "World"
redis> LRANGE myotherlist 0 -1
(empty array)