列表简单说明
Redis的列表(list)是一种线性的有序结构,可以按照元素被推入列表中的顺序来存储元素,这些元素既可以是文字数据也可以是二进制数据,并且列表中的元素可以重复出现。
![](https://i-blog.csdnimg.cn/blog_migrate/e8dcdfd7913401ae762ead31fc2fe3b1.jpeg)
Redis为列表提供了丰富的操作命令,通过这些命令用户可以:
- 将新元素推出列表的左端或者右端。
- 移除位于列表最左端或者最右端的元素。
- 移出列表最右端的元素,然后把被移除的元素推入另一个列表的左端。
- 获取列表包含的元素数量。
- 获取列表,在指定索引上的单个元素或者获取列表在指定索引范围内的多个元素。
- 对列表进行修剪,只保留指定索引范围内的元素。
- 为列表的指定索引设置新元素,或者把新元素添加到某个指定元素的前面或者后面。
- 从列表中移除指定元素
- 执行能够阻塞客户端的推出和移除操作。
列表命令说明
lpush、rpush:将元素推入到列表左端、右端
用户可以通过lpush命令,将一个或多个元素推入指定列表的左端
lpush key item [item ...]
在推入操作执行完毕后,lpush命令会返回列表当前包含的元素数量作为返回值。
下图示例,展示lpush命令每次推入一个元素的过程
上图示例:
- 在执行第一次lpush之前,todo-list列表为空,里面没有元素
- 执行第一次lpush之后,将元素"buy some milk"插入到列表左端,执行完后,列表中有1个元素
- 执行第二次lpush之后,将元素"go to school"插入到列表左端,执行完后,列表中有2个元素
- 执行第三次lpush之后,将元素"go home"插入到列表左端,执行完成后,列表中有3个元素
执行完3次lpush后,todo-list列表元素如下
lpush命令允许用户一次将多个元素推入列表左端:如果用户在执行lpush命令时给定了多个元素,那么lpush命令将按照元素给定的顺序,从左到右依次将所有给定元素推入列表左端。
下图示例,展示lpush命令一次推入多个元素过程
将上面三次推入的元素,使用命令 lpush todo-lists "buy some milk" "go to school" "go home" 这次一次性推入到键为todo-lists的列表当中
因多个元素,会依次推入到列表todo-lists的最左端,3个元素推入完成后,效果如下
rpush命令和lpush命令类似,这两个命令执行的都是元素推入操作,这里就不再展示具体使用示例了。唯一区别就是lpush命令会将元素推入到列表左端,而rpush命令会将元素推入到列表右端,同样允许一次推入一个元素和一次推入多个元素。
rpush key item [item ...]
在推入操作执行完毕后,rpush命令会返回列表当前包含的元素数量作为返回值。
之前有提,Redis的列表结构中,允许重复的元素,示例看一下
在todo-list里面,继续推入"go home"元素两次,整体todo-list的元素数量变为了5,列表中有3个"go home"
lpushx、rpushx:只对已存在的列表执行推入操作
当用户调用lpush命令或rpush命令的时候,如果给定的列表key