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

操作字符串命令

 

 

 

 

posted @ 2021-04-24 16:51  意犹未尽  阅读(51)  评论(0编辑  收藏  举报