List(列表)
LPUSH
LPUSH key value [value ...]
将一个或多个值 value 插入到列表 key 的表头
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。
如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。
返回值:执行 LPUSH 命令后,列表的长度。
在Redis 2.4版本以前的 LPUSH 命令,都只接受单个 value 值。
# 加入单个元素
redis> LPUSH languages python
(integer) 1
# 加入重复元素
redis> LPUSH languages python
(integer) 2
redis> LRANGE languages 0 -1 # 列表允许重复元素
1) "python"
2) "python"
# 加入多个元素
redis> LPUSH mylist a b c
(integer) 3
redis> LRANGE mylist 0 -1
1) "c"
2) "b"
3) "a"
LPOP
LPOP key
移除并返回列表 key 的头元素。
返回值:
列表的头元素。
当 key 不存在时,返回 nil 。
redis> LLEN course
(integer) 0
redis> RPUSH course algorithm001
(integer) 1
redis> RPUSH course c++101
(integer) 2
redis> LPOP course # 移除头元素
"algorithm001"
RPUSH
RPUSH key value [value ...]
将一个或多个值 value 插入到列表 key 的表尾(最右边)。
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。
如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。
返回值:执行 RPUSH 操作后,表的长度。
# 添加单个元素
redis> RPUSH languages c
(integer) 1
# 添加重复元素
redis> RPUSH languages c
(integer) 2
redis> LRANGE languages 0 -1 # 列表允许重复元素
1) "c"
2) "c"
# 添加多个元素
redis> RPUSH mylist a b c
(integer) 3
redis> LRANGE mylist 0 -1
1) "a"
2) "b"
3) "c"
RPOP
RPOP key
移除并返回列表 key 的尾元素。
返回值:
列表的尾元素。
当 key 不存在时,返回 nil 。
RPUSHX
RPUSHX key value
将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。
和 RPUSH 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。
返回值:RPUSHX 命令执行之后,表的长度。
key不存在
redis> LLEN greet
(integer) 0
redis> RPUSHX greet “hello” # 对不存在的 key 进行 RPUSHX,PUSH 失败。
(integer) 0
key 存在且是一个非空列表
redis> RPUSH greet "hi" # 先用 RPUSH 插入一个元素
(integer) 1
redis> RPUSHX greet "hello" # greet 现在是一个列表类型,RPUSHX 操作成功。
(integer) 2
redis> LRANGE greet 0 -1
1) "hi"
2) "hello"0
LPUSHX
LPUSHX key value
将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。
和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。
返回值:LPUSHX 命令执行之后,表的长度。