list

  1. Redis中的List类型是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。
  2. 特点是:有序、元素可以重复、插入和删除快、查询速度一般。
  3. 常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等。

BLMOVE

  1. 从list中弹出一个元素,将其推入另一个list并返回。阻塞,直到元素可用为止。如果最后一个元素被移动,则删除list。

  2. 语法:

BLMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT> timeout

BLMPOP

  1. 从多个list中弹出第一个元素。阻塞,直到元素可用为止。如果弹出最后一个元素,则删除list。

  2. 语法:

BLMPOP timeout numkeys key [key ...] <LEFT | RIGHT> [COUNT count]

BLPOP

  1. 移除并返回list中的第一个元素。阻塞,直到元素可用为止。如果弹出最后一个元素,则删除list。

  2. 语法:

BLPOP key [key ...] timeout
  1. 示例:
redis> DEL list1 list2
(integer) 0
redis> RPUSH list1 a b c
(integer) 3
redis> BLPOP list1 list2 0
1) "list1"
2) "a"

BRPOP

  1. 移除并返回list中的最后一个元素。阻塞,直到元素可用为止。如果弹出最后一个元素,则删除list。

  2. 语法:

BRPOP key [key ...] timeout
  1. 示例:
redis> DEL list1 list2
(integer) 0
redis> RPUSH list1 a b c
(integer) 3
redis> BRPOP list1 list2 0
1) "list1"
2) "c"

BRPOPLPUSH

  1. 从list中弹出一个元素,将其推入另一个list并返回。阻塞,直到元素可用为止。如果弹出最后一个元素,则删除list。

  2. 语法:

BRPOPLPUSH source destination timeout

LINDEX

  1. 根据索引从list中返回一个元素。

  2. 语法:

LINDEX key index
  1. 示例:
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

  1. 将一个元素插入list中另一个元素之前或之后。

  2. 语法:

LINSERT key <BEFORE | AFTER> pivot element
  1. 示例:
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

  1. Returns the length of a list.

  2. 返回list的长度。

  3. 语法:

LLEN key
  1. 示例:
redis> LPUSH mylist "World"
(integer) 1
redis> LPUSH mylist "Hello"
(integer) 2
redis> LLEN mylist
(integer) 2

LMOVE

  1. 从一个list中弹出元素并将其压入另一个list后返回该元素。如果最后一个元素被移动,则删除list。

  2. 语法:

LMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT>
  1. 示例:
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

  1. 从list中删除多个元素后返回它们。如果弹出最后一个元素,则删除list。

  2. 语法:

LMPOP numkeys key [key ...] <LEFT | RIGHT> [COUNT count]
  1. 示例:
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

  1. Returns the first elements in a list after removing it. Deletes the list if the last element was popped.

  2. 返回删除list后的第一个元素。如果弹出最后一个元素,则删除list。

  3. 语法:

LPOP key [count]
  1. 示例:
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

  1. 返回list中匹配元素的索引。
  2. 语法:
LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]
  1. 示例:
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

  1. 将一个或多个元素添加到list中。如果键不存在,则创建该键。

  2. 语法:

LPUSH key element [element ...]
  1. 示例:
redis> LPUSH mylist "world"
(integer) 1
redis> LPUSH mylist "hello"
(integer) 2
redis> LRANGE mylist 0 -1
1) "hello"
2) "world"

LPUSHX

  1. 仅当list存在时,将一个或多个元素添加到list中。

  2. 语法:

LPUSHX key element [element ...]
  1. 示例:
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

  1. 返回list中的元素范围。

  2. 语法:

LRANGE key start stop
  1. 示例:
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

  1. 从list中删除元素。如果最后一个元素被删除,则删除list。

  2. 语法:

LREM key count element
  1. 示例:
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

  1. 根据list中元素的索引设置元素的值。

  2. 语法:

LSET key index element
  1. 示例:
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

  1. 从list两端移除元素。如果所有元素都被修剪,则删除list。

  2. 语法:

LTRIM key start stop
  1. 示例:
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

  1. 返回并删除list的最后一个元素。如果弹出最后一个元素,则删除list。

  2. 语法:

RPOP key [count]
  1. 示例:
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

  1. 将list的最后一个元素移除并压入另一个list后返回该元素。如果弹出最后一个元素,则删除list。

  2. 语法:

RPOPLPUSH source destination
  1. 示例:
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

  1. 将一个或多个元素附加到list中。如果键不存在,则创建该键。

  2. 语法:

RPUSH key element [element ...]
  1. 示例:
redis> RPUSH mylist "hello"
(integer) 1
redis> RPUSH mylist "world"
(integer) 2
redis> LRANGE mylist 0 -1
1) "hello"
2) "world"

RPUSHX

  1. 仅当list存在时才将元素追加到list。

  2. 语法:

RPUSHX key element [element ...]
  1. 示例:
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)