Redis筆記:Redis的字典什麼時候進行Rehash?

Redis筆記:Redis的字典什麼時候進行Rehash?

哈希表的負載因子公式:
load_factor = ht[0].used / ht[0].size
負載因子 = 哈希表已保存節點數量 / 哈希表大小

  • 當服務器沒有在執行 BGSAVE 命令或者 BGREWRITEAOF 命令,並且哈希表的負載因子大於等於1
  • 服務器正在執行 BGSAVE 命令或者 BGREWRITEAOF 命令,並且哈希表的負載因子大於等於5

根據 BGSAVE 命令或 BGREWRITEAOF 命令是否正在執行,服務器執行擴展操作所需的負載因子並不相同,這是因爲在執行 BGSAVE 命令或 BGREWRITEAOF 命令的過程中,Redis 需要創建當前服務器進程的子進程,而大多數操作系統都採用寫時複製 (copy-on-write)技術來優化子進程的使用效率,所以在子進程存在期間,服務器會提高執行擴展操作所需的負載因子,儘可能地避免在子進程存在期間進行哈希表擴展操作。這可以避免不必要的內存寫入操作,最大限度節約內存。另一方面,當哈希表的負載因子小於0.1時,程序自動開始對哈希表執行收縮操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章