1. 程式人生 > >[redis]使用hash代替string節省記憶體

[redis]使用hash代替string節省記憶體

  1. 雜湊物件儲存的所有鍵值對的鍵和值的字串長度都小於 64 位元組;
  2. 雜湊物件儲存的鍵值對數量小於 512 個; ziplist 編碼的資料底層是使用壓縮列表作為底層資料結構
  • https://www.jianshu.com/p/dee0f1edc4e4
  • 省記憶體的原因是新建一個 hash 物件時開始是用 ziplist(又稱為 small hash)來儲存的。 這個 ziplist 其實並不是 hash table,但是 ziplist 相比正常的 hash 實現可以節省不少 hash 本身需要的一些元資料儲存開銷。 儘管 ziplist 的新增,刪除,查詢都是 O(n),但是由於一般物件的 field 數量都不太多。 所以使用 ziplist 也是很快的,也就是說新增刪除平均還是 O(1) 。 如果 field 或者 value 的大小超出一定限制後,redis 會在內部自動將 ziplist 替換成正常的 hash 實現, 這個限制可以在配置檔案中指定 hash-zipmap-max-entries 引數來控制。 將 hash-zipmap-max-entries 設定為 1000 時,效能比較好,超過 1000 後 HSET 命令就會導致 CPU 消耗變