当我读到redis embstr存储的一些短字符串内容时,表现出这些优点:嵌入的字符串:如果值字符串的大小小于或等于44字节,Redis会将该字符串保存在Redis对象本身的同一个块中,这比Raw String编码更节省内存,也更方便缓存。这就是说,embstr比raw string更有效率。为什么embstr更有效率?
nzk0hqpo1#
对于嵌入式字符串编码,字符串由Redis对象分配,因此它只执行一次malloc调用。
------------------------------------------------------ |Redis object header | data pointer =|> embedded string| ------------------------------------------------------
对于原始字符串编码,字符串是单独分配的,因此需要进行2次malloc调用。
----------------------------------- |Redis object header | data pointer | ----------------------------------- || \/ ------------ | raw string | ------------
由于嵌入的字符串 * 靠近 * Redis对象头,它也更适合缓存。
1条答案
按热度按时间nzk0hqpo1#
对于嵌入式字符串编码,字符串由Redis对象分配,因此它只执行一次malloc调用。
对于原始字符串编码,字符串是单独分配的,因此需要进行2次malloc调用。
由于嵌入的字符串 * 靠近 * Redis对象头,它也更适合缓存。