1. 程式人生 > >redis 由淺入深 之 進階(伺服器)

redis 由淺入深 之 進階(伺服器)

  • 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 的值可以驗證這種情況是否發生。