【Redis】List列表命令、编码方式及应用场景

List 列表

命令

编码方式

以前Redis对List有两种编码方式,一种是ziplist压缩列表,另一种是linkedlist链表,使用逻辑和哈希的ziplist和hashtable是一样的:具体参考((20260413212245-096hkh2 '哈希类型'))

Redis 5后,采用了quicklist的操作,相当于将ziplist的压缩特性和linkedlist的链表连接特性结合起来

应用场景

  • Redis 通常用list作为"数组"这样的结构,来存储多个元素,如
  • 作为消息队列,经典的模型就是生产者-消费者模型。消费者brpop,达到轮询的效果

    谁先执行到brpop命令,就谁先拿到这个请求,接下来又轮到消费者2、3。然后接着就是1、2、3...

brpop是block right pop,阻塞弹出,当列表为空时,就阻塞(相当于消费者在准备去"抢"这个新元素)。一直等到列表有新元素就push该元素,同时返回元素的内容。

  • 另外还有分频道的消息队列,所谓分频道就是在 Redis中有多个列表

    这种多频道,就可以在某种数据发生问题的时候也不会影响到其他数据(低耦合)

    同时消费者也可以读取多个频道(读取多个key)

PineLine

叫做流水线或者叫管道

假设列表里有很多元素,你需要循环这个列表,每一次都去取列表里的键值对元素的话,就要执行o(N)次的hgetall key,也就是很多次的网络请求。如果请求非常多,那就会导致阻塞

pineline的作用就是将多次的命令合并成一次的网络请求再进行通信。

注意,选择列表类型时,请参考:

同侧存取:(lpush + lpop)/ (rpush + rpop)为栈

异侧存取:(lpush + lrpop)/ (rpush + lpop)为队列

相关推荐
虹科网络安全4 小时前
RDI 多数据源管道:把分散的数据汇入统一 Redis 数据层
经验分享·redis·艾体宝·艾体宝it·艾体宝redis
我不会起名字3225 小时前
Redis 从 0 到 1(三十七·收官):36 篇浓缩成 1 张知识地图 + 50 项生产 Checklist
redis·go·知识体系·checklist·收官
Zan7 小时前
SQLite + SQLx 实战:为什么已经发布的数据库迁移文件,绝对不能再修改?
数据库·后端·面试
2601_967987377 小时前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
这个DBA有点耶8 小时前
数据同步的三个工程底线:DDL同步、断点续传、一致性校验——开源CDC的边界与KFS的路径
数据库·dba·代码规范
小番茄程序猿9 小时前
Redis 编码压测 59 轮:HSET 快 23 倍是假象,SMEMBERS 慢 30 倍是真的
redis·后端
SelectDB9 小时前
列式存储为什么适合分析类负载?原理、限制与日志场景应用
数据库
数据库小学妹9 小时前
MySQL大字段治理:行溢出机制、覆盖索引与拆表
数据库·mysql·性能优化
鶴哥只手遮天10 小时前
《Redis 8.10.3 深度剖析》系列 ·第 13 章 Set:三种编码、集合运算与随机采样
redis·后端·开源