redis详解-(4)列表

redis的列表是基于LinkedList实现,元素是字符串类型,列表头尾增删快,中间增删慢,增删元素是常态。
列表中元素可以重复出现,最多包含2的32次方减1个元素。

列表的索引从左至右从0开始,列表的索引从右至左从-1开始。

正数索引 0 1 2 3 4
语言 C R Java Python Scala
负数索引 -5 -4 -3 -2 -1

命令说明:
B block块 阻塞
L left 左
R right 右
X exist 存在

左右或者头尾压入(栈式)元素

lpush key value [value…] 从左边压入

lpushx key value 从左边压入

rpush key value [value…] 从右边压入

rpushx key value 从右边压入

这里写图片描述

左右或者头部弹出元素

lpop key 从左边弹出

rpop key 从右边弹出

这里写图片描述

从一个列表尾部弹出元素压入另一个列表的头部

rpoplpush source destination

这里写图片描述

返回列表中指定范围内的元素

lrange key start stop

lrange key 0 -1 返回所有的元素

这里写图片描述

获取指定位置的元素

lindex key index

这里写图片描述

设置指定位置元素的值

lset key index value

这里写图片描述

列表长度,元素个数

llen key

这里写图片描述

从列表的头部删除值等于value的元素count次

lrem key count value

count>0:从表头开始向表尾搜索,移除与value相等的元素,数量为count。
count<0:从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。
count=0:移除表中所有与value相等的值。

这里写图片描述

剪切指定范围内的元素

ltrim key start stop

这里写图片描述

在列表中某个存在值(pivot)的前后插入元素,这里具体使用rpush和lpush根据业务而定,例子制作展示
key和value不存在,不进行任何操作

linsert key before|after pivot value

java scala c R -
java ruby scala c R

这里写图片描述