【Redis】数据结构和内部编码

数据结构和内部编码

type 命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合),但这些只是 Redis 对外的数据结构.

实际上Redis内部针对每个数据结构都有自己的内部编码, 而且是多种实现, 这样Redis会在合适的场景选择合适的内部编码

可以看到每种数据结构都有⾄少两种以上的内部编码实现,例如 list 数据结构包含了 linkedlist 和ziplist 两种内部编码。同时有些内部编码,例如 ziplist,可以作为多种数据结构的内部实现,可以通过 object encoding 命令查询内部编码:

可以看到 hello 对应值的内部编码是 embstr,键 mylist 对应值的内部编码是 ziplist。

Redis 这样设计有两个好处:

  1. 可以改进内部编码, 而对外的数据结构和命令没有任何影响, 这样一旦开发出更优秀的内部编码, 无需改动外部数据结构和命令, 例如Redis 3.2 提供了 quicklist, 结合了 ziplist 和linkedlist 两者的优势, 为列表类型提供了一种更为优秀的内部编码实现, 而对用户来说基本无感知.

  2. 多种内部编码实现可以在不同场景下发挥各自的优势, 例如 ziplist 比较节省内存, 但是在列表元素比较多的情况下, 性能会下降, 这时候 Redis 会根据配置选项将列表类型的内部实现转化为 Linkedlist, 整个过程用户同样无感知.

相关推荐
这个DBA有点耶14 小时前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G14 小时前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备15 小时前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
m0_5474866615 小时前
《数据结构教程》全套 PPT课件2026
数据结构
科创致远15 小时前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
IT大白鼠16 小时前
Redis 系列 · 第 01 篇——认知入门:Redis 是什么
redis·nosql
彧azz16 小时前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
2601_9622186116 小时前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren17 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安17 小时前
MySQL-触发器
数据库·mysql