如何解释redis embstr比raw数据类型更高效

q5iwbnjs  于 2022-10-31  发布在  Redis
关注(0)|答案(1)|浏览(206)

当我读到redis embstr存储的一些短字符串内容时,表现出这些优点:
嵌入的字符串:如果值字符串的大小小于或等于44字节,Redis会将该字符串保存在Redis对象本身的同一个块中,这比Raw String编码更节省内存,也更方便缓存。
这就是说,embstr比raw string更有效率。为什么embstr更有效率?

nzk0hqpo

nzk0hqpo1#

对于嵌入式字符串编码,字符串由Redis对象分配,因此它只执行一次malloc调用。

------------------------------------------------------
|Redis object header | data pointer =|> embedded string|
 ------------------------------------------------------

对于原始字符串编码,字符串是单独分配的,因此需要进行2次malloc调用。

-----------------------------------
|Redis object header | data pointer |
 -----------------------------------
                             ||
                             \/
                        ------------
                       | raw string |
                        ------------

由于嵌入的字符串 * 靠近 * Redis对象头,它也更适合缓存。

相关问题