前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis 学习(5)-- 列表类型

redis 学习(5)-- 列表类型

作者头像
希希里之海
发布2019-05-29 08:54:45
3400
发布2019-05-29 08:54:45
举报
文章被收录于专栏:weixuqin 的专栏weixuqin 的专栏

redis 学习(5)-- 列表类型

列表特点

  • 有序、可以重复、左右两边插入弹出
  • 索引相关知识
    • 索引从左往右,从0开始逐个增大 0 1 2 3 4 5
    • 索引从右往左,从-1开始逐个减小 -6 -5 -4 -3 -2 -1

重要 API

命令

含义

rpush key value1 [value2...]

在列表后侧添加一个或多个值

lpush key value1 [value2...]

在列表左侧添加一个或多个值

linsert key before/after value newValue

在列表指定的value前/后插入newValue,时间复杂度为O(n)

lpop key

从列表左侧弹出一个值

rpop key

从列表右侧弹出一个值

lrem key count value

根据count值,从列表中删除值为value的项,时间复杂度为O(n)。count > 0 时,从左往右遍历,删除最多count个与value相等的值;count < 0 时,从右往左遍历,删除最多Math.abs(count)个与value相等的值;count = 0 时,删除所有与value相等的值

trim key start end

对一个列表进行修剪,只保留指定区间内的元素,不在区间内的元素都将被删除,时间复杂度为O(n)

lrange key start end

获取列表指定索引范围的所有元素,时间复杂度为O(n)

lindex key index

获取列表指定索引的元素,时间复杂度为O(n)

llen key

获取列表长度,时间复杂度为O(1)

lset key index newValue

设置列表指定索引的值为newValue,时间复杂度为O(n)。必须存在这个值才能设置成功,否则会报错

blpop key timeout

移除并获取列表左边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止。timeout单位为秒,timeout=0时不阻塞

brpop key timeout

移除并获取列表右边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止。timeout单位为秒,timeout=0时不阻塞

演示

实战

时间轴功能(TimeLine)

使用 lpush 更新,rpop、lpop 删除,lrange 做排序分页等。类似微博的发布信息流。

一些小建议

当我们想实现一些功能的时候,可以结果各种命令组合使用。

  1. LRUSH + LPOP = Stack (实现栈)
  2. LPUSH + RPOP = Queue (实现队列)
  3. LPUSH + LTRIM = Capped Collection (实现有固定数量的列表)
  4. LPUSH + BRPOP = Message Queue (实现消息队列)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • redis 学习(5)-- 列表类型
    • 列表特点
      • 重要 API
        • 演示
          • 实战
            • 一些小建议
            相关产品与服务
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档