Redis数据类型_1_String
String详解
[toc]
String是Redis中最常用的数据类型之一,它的编码方式如下:
- 基本编码方式为RAW,基于SDS实现,存储上限为512M
如果SDS的长度小于等于44字节,则会采用EMBSTR编码,此时Object head和SDS改为使用连续空间,申请内存时也就只需要一次内存分配,提升效率。
为什么是44字节?
答:SDS为x字节(x<=44)时,连续空间总长度为 16 (RedisObject) + 1(len) + 1(alloc) + 1(flags) + x + 1('\0') = x + 20 <= 64
,而Redis底层内存是以$2^n$进行内存分配的,64B恰好是一个分片大小,因此不会产生内存碎片。
- 如果存储的字符串是整数值,并且大小在LONG_MAX内,则会采用INT编码,直接将数据保存在RedisObject的ptr位置
- 因为ptr刚好是8字节,此时不再需要sds部分
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LemontreeN's!