专栏首页weixuqin 的专栏redis 学习(5)-- 列表类型

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

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 (实现消息队列)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • redis 学习(9)-- redis 客户端 -- redis-py

    关于 redis 的各种客户端,我们可以在官网上寻找并使用,比如我这里的 python 客户端,可以在官网上找到:redis-client 。

    希希里之海
  • leecode刷题(26)-- 用栈实现队列

    所以我们只用一个栈的话是无法实现队列的操作的。不妨换个思路,我们用两个栈来实现队列:

    希希里之海
  • redis 学习(二)-- 通用命令

    希希里之海
  • NGINX 配置本地HTTPS(双向认证)

    1、客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。  2、服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的...

    用户2398817
  • Python的dict实现原理及与Java的比较探究

    Python内部很地方都使用着dict这种结构,在对象属性dict就是一个字典,所以对其效率要求很高。 dict采用了哈希表,最低能在 O(1)时间内完成搜索。...

    Python中文社区
  • 用python做ppt服务用于导入图片

    项目需要做WINFORM程序与powerpoint交互,把winform生成的图片自动拷贝到ppt中。目前使用python做了一个简单的服务解决。由于要求是32...

    用户2398817
  • Python 内置函数大全(下)

    函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于:pow(x,y) %z

    Python知识大全
  • 【OCR技术】大批量生成文字训练集

    http://www.nlpr.ia.ac.cn/databases/handwriting/Offline_database.html

    机器学习AI算法工程
  • 我用30分钟做出了一个“公众号”

    身边技术大牛有很多,但是在搞博客搞公众号的却只是较少一部分,为什么呢?是的,因为懒惰,从未想着去尝试。

    后端技术探索
  • 干货|最新版 Spring Boot2.1.5 教程+案例合集

    最近发了一系列的 Spring Boot 教程,但是发的时候没有顺序,有小伙伴反映不知道该从哪篇文章开始看起,刚好最近工作告一个小小段落,松哥就把这些资料按照学...

    江南一点雨

扫码关注云+社区

领取腾讯云代金券