Redis五大数据类型List操作命令

  • ​​一、常用命令​​
  • ​​1.1、BLPOP key1[key2] timeout​​
  • ​​1.2、BPROP key1[key2] timeout​​
  • ​​1.3、BRPOPLPUSH source destination timeout​​
  • ​​1.4、LINDEX key index​​
  • ​​1.5、LINSERT key BEFORE|AFTER pivot value​​
  • ​​1.6、LLEN key​​
  • ​​1.7、LPOP key​​
  • ​​1.8、LPUSH key value1 [value2]​​
  • ​​1.9、LPUSHX key value​​
  • ​​1.10、LRANGE key start stop​​
  • ​​1.11、LREM key count value​​
  • ​​1.12、LSET key index value​​
  • ​​1.13、LTRIM key start stop​​
  • ​​1.14、RPOP key​​
  • ​​1.15、 RPOPLPUSH source destination​​
  • ​​1.16、RPUSH key value1 [value2]​​
  • ​​1.17、RPUSHX key value​​
  • ​​二、实操​​

一、常用命令

1.1、BLPOP key1[key2] timeout

移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

1.2、BPROP key1[key2] timeout

移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

1.3、BRPOPLPUSH source destination timeout

从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表知道等待超时或发现可弹出元素为止

1.4、LINDEX key index

通过索引获取列表中的元素

1.5、LINSERT key BEFORE|AFTER pivot value

在列表的元素前或者后插入元素

1.6、LLEN key

返回列表 key 的长度。

如果 key 不存在,则 key 被解释为一个空列表,返回 0 .

如果 key 不是列表类型,返回一个错误。

1.7、LPOP key

移除并返回列表 key 的头元素。

1.8、LPUSH key value1 [value2]

将一个或多个值 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 存在但不是列表类型时,返回一个错误。

1.9、LPUSHX key value

将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。 和 LPUSH key value [value …]
命令相反,当 key 不存在时, LPUSHX 命令什么也不做。

1.10、LRANGE key start stop

返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。

下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1
表示列表的第二个元素,以此类推。

你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

1.11、LREM key count value

根据参数 count 的值,移除列表中与参数 value 相等的元素。

count 的值可以是以下几种:

count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。

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

count = 0 : 移除表中所有与 value 相等的值。

1.12、LSET key index value

将列表 key 下标为 index 的元素的值设置为 value 。

当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。

1.13、LTRIM key start stop

对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。

下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1
表示列表的第二个元素,以此类推。

你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

当 key 不是列表类型时,返回一个错误。

1.14、RPOP key

移除并返回列表 key 的尾元素

1.15、 RPOPLPUSH source destination

命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:

将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

举个例子,你有两个列表 source 和 destination , source 列表有元素 a, b, c , destination
列表有元素 x, y, z ,执行 RPOPLPUSH source destination 之后, source 列表包含元素 a, b
, destination 列表包含元素 c, x, y, z ,并且元素 c 会被返回给客户端。

如果 source 不存在,值 nil 被返回,并且不执行其他动作。

如果 source 和 destination
相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。

1.16、RPUSH key value1 [value2]

将一个或多个值 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 存在但不是列表类型时,返回一个错误。

1.17、RPUSHX key value

将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。

和 RPUSH key value [value …] 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。

二、实操

Redis五大数据类型之List操作命令_redis


表头插几个值

lpush list01 1 2 3 4 5

查看

lrange list02 0 -1

Redis五大数据类型之List操作命令_列表_02


Redis五大数据类型之List操作命令_linux_03

从list01和list02的表头分别出几个值

lpop list01
lpop list02

Redis五大数据类型之List操作命令_列表_04


从表尾出几个值

rpop list01
rpop list02

Redis五大数据类型之List操作命令_搜索_05


再查看list01和list02的值

这里你理解成lpop是从栈顶出,rpop是从栈底出就明白了(或者链表表头和表尾)

Redis五大数据类型之List操作命令_列表_06


通过索引获取元素

lindex list01 3
lindex list01 2
lindex list02 2

Redis五大数据类型之List操作命令_redis_07

获取key的长度

llen list01
llenlist02

Redis五大数据类型之List操作命令_列表_08


从列表尾部插入

RPUSH list03 1 1 1 2 2 2 3 3 3 4 4 4 5 6 7

哎呀,卧槽,不小心关掉了ssh连接,实操记录没了,就先写到这里吧,博友们看上面的基础操作命令照着走就行,不难