字符串对象的编码可以是:
- int
- raw
- embstr
如果一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示,那么字符串对象会将整数值保存在字符串对象结构的ptr属性里面(将void*转换成long),并将字符串对象的编码设置为int。
例如,如果我们执行以下SET命令,那么服务器将创建一个如图所示的int编码的字符串对象作为number键的值:
redis> SET number 10086
OK

如果字符串对象保存的是一个字符串值,并且这个字符串值的长度大于32字节
Redis中的字符串对象有三种编码方式:int、raw和embstr。int编码适用于能用long表示的整数,raw编码用于超过32字节的字符串,而embstr编码用于32字节及以下的字符串。embstr编码通过一次性内存分配减少分配次数,提升效率。当对象需要修改时,int和embstr编码可能转换为raw编码。
订阅专栏 解锁全文
1121





