Redis之Lists
1、lpush、rpush
lpush key value [value ...]
将所有值插入到 key 的列表头部。若 key 不存在,在插入时会创建一个空列表;若 key对应的值不是list,会报错。
元素从左到右,一个一个插入到列表的头部。所以对于 lpush mylist a b c,返回的列表c为第一个元素,b为第二个元素,a为第三个元素
RPUSH key value [value ...]
向 key 的列表的尾部插入所有指定的值。
返回值
在push操作后的列表的长度。
lpush例子
![](https://img2020.cnblogs.com/blog/1485457/202010/1485457-20201004194225438-1286458130.png)
rpush例子
2、lrange
lrange key start stop
返回存储在 key 的列表里的指定范围的元素。(list的第一个元素的下标为0)
偏移量可以为负数,表示从list的尾部开始计数。-1表示最后一个元素,-2表示倒数第二个。
下标超过 list 范围的时候,不会报错。如果 start 比 list 的尾部大的话,会返回一个空列表。
如果 stop 比 list 的实际尾部大的话,Redis会当作是最后一个元素的下标。
返回值
指定范围的列表元素
例子
3、LREM
LREM key count value
从 key 的列表里移除前 count 次出现的值为 value 的元素。
这个 count 参数通过下面几种方式影响这个操作:
- count > 0: 从头往尾移除值为 value 的元素。
- count < 0: 从尾往头移除值为 value 的元素。
- count = 0: 移除所有值为 value 的元素。
比如, LREM list -2 “hello” 会从 list 的列表里移除最后两个出现的 “hello”。
所以当 key 不存在的时候,这个命令会返回 0。
返回值
被移除的元素个数。
例子
4、LLEN key
返回存储在 key 里的list的长度。 如果 key 不存在,返回 0。 当存储在 key 里的值不
是一个list的话,会返回error。
返回值
key 对应的 list 的长度。
例子
5、LPOP、RPOP
LPOP key
移除并且返回 key 对应的 list 的第一个元素。
RPOP key
移除并返回存于 key 的 list 的最后一个元素。
返回值
LPOP 返回第一个元素的值,或者当key不存在时返回nil。
RPOP 返回最后一个元素的值,或者当key不存在时返回nil。
例子
6、LPUSHX、RPUSHX
LPUSHX key value
只有当 key 已经存在并且存着一个 list 的时候,在这个 key 下面的 list 的头部插入value。
与 LPUSH 相反,当 key 不存在的时候不会进行任何操作。
RPUSHX key value
将值 value 插入到列表 key 的表尾, 当且仅当 key 存在并且是一个列表。
和 RPUSH 命令相反, 当 key 不存在时,RPUSHX 命令什么也不做。
返回值
在 push 操作后的 list 长度。
例子
7、LINDEX
LINDEX key index
返回key对应的列表的index索引处的值。下标从0开始,负数从队列的尾部开始索引元素,-1为最后一个,依次类推。
当key对应的值不是一个列表的时候,会报错。
返回值
请求的对应元素,或者当 index 超过范围的时候返回 nil。
例子
8、LSET
LSET key index value
设置 index 位置的list元素的值为 value,当index超出范围时会返回一个error。
例子
9、LINSERT
LINSERT key BEFORE|AFTER pivot value
把 value 插入存于 key 的列表中在基准值 pivot 的前面或后面。
当 key 不存在时,这个list会被看作是空list,任何操作都不会发生。
当 key 存在,但保存的不是一个list的时候,会返回error。
返回值
经过插入操作后的list长度,或者当 pivot 值找不到的时候返回 -1。
例子
10、LTRIM
LTRIM key start stop
- 修剪(trim)一个已存在的 list,这样 list 就会只包含指定范围的指定元素。
- start 和 stop 都是由0开始计数的, 这里的 0 是列表里的第一个元素(表头),1 是第二个元素,以此类推。
- start 和 stop 也可以用负数来表示与表尾的偏移量,比如 -1 表示列表里的最后一个元素, -2 表示倒数第二个,等等。
- 超过范围的下标并不会产生错误:如果 start 超过列表尾部,或者 start > stop,结果会是列表变成空表(即该 key 会被移除)。
- 如果 stop 超过列表尾部,Redis 会将其当作列表的最后一个元素。
例子