Redis原理(二) Redis的对象类型及其内部编码

Redis支持五种对象类型:String, List, Hash, Set, Sorted Set,每种都有至少两种内部编码,如字符串的embstr和raw,列表的ziplist和linkedlist等。内部编码的选择基于内存效率和操作效率的平衡,例如,小对象通常使用更节省空间的编码,当数据量增大时切换到更灵活的编码。转换过程在写入时完成,且不可逆,始终从小内存编码向大内存编码转换。文章详细介绍了各类型及其编码的适用场景和转换规则。" 113055089,10541215,C语言编程实践:猜数字游戏实现,"['C语言', '编程实践', '随机数生成']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis 支持 5 种对象类型,而每种结构都有至少两种编码。

这样做的好处在于:一方面接口与实现分离,当需要增加或改变内部编码时,用户使用不受影响,另一方面可以根据不同的应用场景切换内部编码,提高效率。

Redis 各种对象类型支持的内部编码官网描述:

Strings can be encoded as raw (normal string encoding) or int (strings representing integers in a 64 bit signed interval are encoded in this way in order to save space).

Lists can be encoded as ziplist or linkedlist. The ziplist is the special representation that is used to save space for small lists.

Sets can be encoded as intset or hashtable. The intset is a special encoding used for small sets composed solely of integers.

Hashes can be encoded as ziplist or hashtable. The ziplist is a special encoding used for small hashes.

Sorted Sets can be encoded as ziplist or skiplist format. As for the List type small sorted sets can be specially encoded using ziplist, while the skiplist encoding is the one that works with sorted sets of any size.

翻译如下表格:

类型 编码 对象
String int 整数值实现
String embstr sds实现 <=39 字节
String raw sds实现 > 39字节
List ziplist 压缩列表实现
List linkedlist 双端链表实现
Set intset 整数集合使用
Set hashtable 字典实现
Hash ziplist 压缩列表实现
Hash hashtable 字典使用
Sorted set zipl
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值