06 list类型操作命令介绍


1 list类型介绍

  • 存储多个数据,并对数据进入存储空间的顺序进行区分
  • 一个存储空间保存多个数据,且通过数据可以体现进入顺序
  • 保存多个数据,底层使用双向链表存储结构实现

在这里插入图片描述

2 操作指令

2.1 基本操作(增删改插)

  1. 添加
lpush key value1 [value2] ……  # 将某个值从左push到list
lpushx key value # 同lpush,但是必须要保证这个key存在
rpush key value1 [value2] ……  # 将某个值从右边push到list
rpushx key value …… # 同rpush,但是必须要保证这个key存在

linsert key BEFORE|AFTER pivot value  # 在某一个元素之前,之后插入新元素
  1. 获取数据
lrange key start stop  # 获取某一个下标区间内的元素 索引下标可以是负数,比如-1,就表示倒数第一个
lindex key index # 获取某一个指定索引位置的元素
llen key # 获取列表元素个数
  1. 获取并移除数据
lpop key  # 返回和移除列表左边的第一个元素
rpop key # 返回和移除列表右边的第一个元素
  1. 修改数据
lset key index value  # 设置某一个指定索引的值(索引必须存在),索引计数是从左边开始的
  1. 删除指定元素,并且可以指定个数,即使count为0也会删除一个(至少会删除一个指定的元素)
lrem key count value
  1. ltrim:保留列表中特定区间内的元素(依然是左边开始数),索引计数是从左边开始的
ltrim key start stop

eg1:

localhost:6379> lpush score 1 2 3 
(integer) 3
localhost:6379> llen score
(integer) 3
localhost:6379> lrange score 0 2  # 一定要注意取出来的顺序,很好理解,第一个从左push进去的1,然后是2,3;所以最后最左边的元素就是3,依次为3,2,1
1) "3"
2) "2"
3) "1"
localhost:6379> lpop score  # 从左边出来来的就是3
"3"
localhost:6379> rpop score # 从左边出来来的就是1
"1"

一定要注意取出来的顺序,很好理解,第一个从左push进去的1,然后是2,3;所以最后最左边的元素就是3,依次为3,2,1

eg2:

localhost:6379> rpush users kobe wade harden
(integer) 3
localhost:6379> lrange users 0 2
1) "kobe"
2) "wade"
3) "harden"
localhost:6379> lrange 0 -1
(error) ERR wrong number of arguments for 'lrange' command
localhost:6379> lrange users 0 -1
1) "kobe"
2) "wade"
3) "harden"
localhost:6379> lrange users 0 -2
1) "kobe"
2) "wade

从右边依次push进去kobe wade harden,所以你从左边看,顺序依然是kobe wade harden

eg3: 测试linsert

localhost:6379> lpush ids 1 2 3 5
(integer) 4
localhost:6379> lrange ids 0 -1
1) "5"
2) "3"
3) "2"
4) "1"
localhost:6379> linsert ids before 1 a  # 1这个元素之前插入一个a
(integer) 5
localhost:6379> lrange ids 0 -1 # 遍历看一下
1) "5"
2) "3"
3) "2"
4) "a"
5) "1"
localhost:6379> linsert ids before 6 a # 6这个元素不存在返回-1
(integer) -1
localhost:6379> linsert ids after 1 b
(integer) 6
localhost:6379> lrange ids 0 -1  # 遍历
1) "5"
2) "3"
3) "2"
4) "a"
5) "1"
6) "b"

eg4:测试lset

localhost:6379> lpush users kobe wade harden
(integer) 3
localhost:6379> lset users 0 rose
OK
localhost:6379> lrange users 0 -1
1) "rose"
2) "wade"
3) "kobe"
  • 0索引的元素并非是第一个push进去的,而是最后一个推进去的,因为索引计数是从左边开始的
  • 此时列表:[harden, wade, kobe]
  • 左边的第0个就是harden
localhost:6379> rpush users kobe wade harden
(integer) 3
localhost:6379> lset users 0 rose
OK
localhost:6379> lrange users 0 -1
1) "rose"
2) "wade"
3) "harden"
  • 此时列表:[kobe, wade, harden]
  • 左边的第0个就是kobe

eg5:测试lrem

localhost:6379> lpush users kobe wade harden kobe james
(integer) 5
localhost:6379> lrange users 0 -1
1) "james"
2) "kobe"
3) "harden"
4) "wade"
5) "kobe"
localhost:6379> lrem users 1 kobe
(integer) 1
localhost:6379> lrange users 0 -1
1) "james"
2) "harden"
3) "wade"
4) "kobe"

2.2 阻塞式获取

blpop key1 [key2] timeout
brpop key1 [key2] timeout

在这里插入图片描述

3 常用客户端指令总结

命令说明
lpush将某个值加入到一个key列表头部
lpushx同lpush,但是必须要保证这个key存在
rpush将某个值加入到一个key列表末尾
rpushx同rpush,但是必须要保证这个key存在
lpop返回和移除列表左边的第一个元素
rpop返回和移除列表右边的第一个元素
lrange获取某一个下标区间内的元素
llen获取列表元素个数
lset设置某一个指定索引的值(索引必须存在)
lindex获取某一个指定索引位置的元素
lrem删除重复元素
ltrim保留列表中特定区间内的元素
linsert在某一个元素之前,之后插入新元素

4 list 类型数据操作注意事项

  • list中保存的数据都是string类型的,数据总容量是有限的,最多2^32- 1 个元素 (4294967295)。
  • list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值