redis-原理-对象-字符串对象-String(七)
说明
redis的字符串类型的编码可以是int raw 或者embstr
针对int类型
本地:0>object encoding msg int
针对长度大于32的字符
使用SDS来存储
本地:0>set msg 32434234234234234324234324324332539342342reererersdf OK 本地:0>object encoding msg raw
针对小于32位的字符串
采用embstr来存储 embstr将分配2次空间 优化成分配一次 embstr 跟raw不一样的是 embstr跟对象在一个结构里面,创建和释放都只需要操作一次
本地:0>set msg helloword OK 本地:0>object encoding msg embstr
好处分配内存row编码分配2次变为embstr的一次
回收的时候row编码需要调用2次回收函数变为embstr的一次
embstr本质是一块连续的内存空间
编码转换
前面说了,redis会根据不同场景使用不同编码来保证效率,如32位以下采用 embstr 32位以上采用raw编码 数值采用int编码 达到某种条件则会转换编码 比如int转换为embstr
操作字符串命令