參見:
Redis使用哈希存儲節省內存-劉專欄-博客
我們得到下面的公式:
原來是:
密鑰1,密鑰2,密鑰3,密鑰4,密鑰5
成為
hash1:
key1:value1
關鍵字2:值2
關鍵字3:值2
哈希2:
關鍵4:價值4
關鍵5:價值5
雖然名義上五個鍵變成兩個hashmap,但是每個filed還是會保存原來的鍵,所以減少鍵是不可行的。這時候就要看底層的存儲結構了。
Redis對hashmap進行了優化。當filed的數量較少時(因為ziplist是以順序的方式搜索元素,所以復雜度為o(N)以上肯定是不合適的)。
),它會用壹種叫做ziplist的結構保存,而不是傳統的hash結構。ziplist有幾個特點:
ziplist簡介
/weixin _ 30783913/文章/詳情/98141347
所以hashmap能節省內存靠的是ziplist的結構,而不是key的減少。
可以用以下參數控制Ziplist。
以上兩個條件必須滿足,那麽這個鍵就會被壓縮。否則,哈希類型的鍵根據正常的哈希結構存儲。