redis6入门与应用(四)之list

列表(list)类型是用来存储多个有序的字符串,在redis中可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等操作(具体查看下面操作示意图),一个列表最多可以包含 232 - 1 个元素。列表是比较灵活的数据结构,在实际开发中有很多应用场景。

可以实现的功能

  • lpush + lpop
  • lpush + rpop 队列
  • lpush + brpop 消息队列
  • lpush + ltrim 有限集合

操作示意图

演示了插入、弹出、总长度、索引取值、删除元素、获取区间

常用命令

命令说明时间复杂度
lpush key value [value …]将一个或多个值插入到列表头部(最左边)。
如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误
O(1)
rpush key value [value …]将一个或多个值插入到列表尾部(最右边)。
如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误
O(1)
lpop key移除并返回列表的第一个元素O(1)
rpop key移除并返回存于 key 的 list 的最后一个元素O(1)
llen key返回列表的长度。
如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误
O(1)
lindex key index通过索引获取列表中的元素。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
如果指定索引值不在列表的区间范围内,返回 nil
O(N)
lrem key count value从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作:
1、count > 0: 从头往尾移除值为 value 的元素;
2、count < 0: 从尾往头移除值为 value 的元素;
3、count = 0: 移除所有值为 value 的元素;
返回被移除元素的数量。 列表不存在时返回 0
O(N)
brpop key [key …] timeout移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止O(1)
blpop key [key …] timeout移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止O(1)
ltrim key start stop对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
O(N)
lrange key start stop返回存储在 key 的列表里指定范围内的元素。 start 和 end 偏移量都是基于0的下标,即list的第一个元素下标是0(list的表头),第二个元素下标是1,以此类推。
偏移量也可以是负数,表示偏移量是从list尾部开始计数。 例如, -1 表示列表的最后一个元素,-2 是倒数第二个,以此类推。
O(S+N)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值