【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, 整个过程用户同样无感知.

相关推荐
yunlaodacom4 分钟前
腾讯云国际版代理商:COS标准、低频、归档和深度归档怎么选?存储成本与数据取回区别
数据库·云计算·腾讯云
Nturmoils4 分钟前
SQL Server数据库迁移:V9R4C019 如何接住存量 T-SQL 批处理
数据库
NineData10 分钟前
NineData智能数据管理平台新功能发布|2026年8月
数据库·人工智能·oracle·中间件·agent·数据库开发·ninedata
Elastic 中国社区官方博客21 分钟前
Elasticsearch 向量数据库:几分钟内完成部署,以经济高效的方式扩展至数千亿规模
大数据·运维·数据库·elasticsearch·搜索引擎·ai·全文检索
1314lay_100722 分钟前
C#调用Sql Server存储过程,有返回值的
数据库·sqlserver·c#
AgentMaster26 分钟前
数据治理工具选型指南:一套可复用的四阶段决策框架
大数据·数据结构·人工智能·算法
DBA_G2 小时前
GBase 8a数据库表空间多路径功能特点综述
数据库·oracle
TDengine (老段)2 小时前
TDgpt 使用 — 部署、SQL、算法
大数据·数据库·sql·算法·时序数据库·tdengine·涛思数据
不会就选b2 小时前
数据结构之树&&二叉树(四)
数据结构·算法
晴天¥2 小时前
Oracle 19c数据库内存管理优化(内存管理方式调整及内存扩容)
数据库·oracle·oracle数据库集群调优