redis 由淺入深 之 進階(伺服器)
阿新 • • 發佈:2018-12-24
memory : 記憶體資訊,包含以下域:
- used_memory : 由 Redis 分配器分配的記憶體總量,以位元組(byte)為單位
- used_memory_human : 以人類可讀的格式返回 Redis 分配的記憶體總量
- used_memory_rss : 從作業系統的角度,返回 Redis 已分配的記憶體總量(俗稱常駐集大小)。這個值和 top 、 ps 等命令的輸出一致。
- used_memory_peak : Redis 的記憶體消耗峰值(以位元組為單位)
- used_memory_peak_human : 以人類可讀的格式返回 Redis 的記憶體消耗峰值
- used_memory_lua : Lua 引擎所使用的記憶體大小(以位元組為單位)
- mem_fragmentation_ratio : used_memory_rss 和 used_memory 之間的比率
- mem_allocator : 在編譯時指定的, Redis 所使用的記憶體分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。
在理想情況下, used_memory_rss 的值應該只比 used_memory 稍微高一點兒。
當 rss > used ,且兩者的值相差較大時,表示存在(內部或外部的)記憶體碎片。
記憶體碎片的比率可以通過 mem_fragmentation_ratio 的值看出。
當 used > rss 時,表示 Redis 的部分記憶體被作業系統換出到交換空間了,在這種情況下,操作可能會產生明顯的延遲。
當 Redis 釋放記憶體時,分配器可能會,也可能不會,將記憶體返還給作業系統。
如果 Redis 釋放了記憶體,卻沒有將記憶體返還給作業系統,那麼 used_memory 的值可能和作業系統顯示的 Redis 記憶體佔用並不一致。
檢視 used_memory_peak 的值可以驗證這種情況是否發生。