1. 程式人生 > >Redis修改最大內存和查詢內存使用情況

Redis修改最大內存和查詢內存使用情況

占用內存 libc have 工具 ring tor ram 大小 total

修改Redis最大占用內存

Redis設置最大占用內存,打開redis配置文件:redis.windows-service,找到如下段落,設置maxmemory參數,maxmemory有的是bytes字節類型,註意轉換,此處為mb。修改如下所示:

# In short... if you have slaves attached it is suggested that you set a lower
# limit for maxmemory so that there is some free RAM on the system for slave
# output buffers (but this is not needed if the policy is ‘noeviction‘).
#
# maxmemory <bytes>
maxmemory 8096mb


用Redis Desktop Manager查看占用內存

1.打開RedisDesktopManager工具連上Redis,運行如圖命令框:
技術分享圖片

2.在下方命令框中輸入info memory,會顯示如下結果
技術分享圖片

其中:

127.0.0.1:0>info memory

"# Memory

used_memory:1670920 由 Redis 分配器分配的內存總量,以字節(byte)為單位
used_memory_human:1.59M 以人類可讀的格式返回 Redis 分配的內存總量
used_memory_rss:1633992 從操作系統的角度,返回 Redis 已分配的內存總量(俗稱常駐集大小)。這個值和 top 、 ps 等命令的輸出一致。

used_memory_rss_human:1.56M
used_memory_peak:1807976 Redis 的內存消耗峰值(以字節為單位)
used_memory_peak_human:1.72M 以人類可讀的格式返回 Redis 的內存消耗峰值
total_system_memory:0
total_system_memory_human:0B
used_memory_lua:37888 Lua 引擎所使用的內存大小(以字節為單位)
used_memory_lua_human:37.00K
maxmemory:1048576000 所查詢的Redis設置的的最大內存值(以字節為單位)
maxmemory_human:1000.00M 所查詢的Redis設置的的最大內存值(以mb為單位)
maxmemory_policy:noeviction
mem_fragmentation_ratio:0.98 used_memory_rss 和 used_memory 之間的比率
mem_allocator:jemalloc-3.6.0 在編譯時指定的, Redis 所使用的內存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。
"
127.0.0.1:0>


對比幾個值

1)當 rss > used ,且兩者的值相差較大時,表示存在(內部或外部的)內存碎片。

內存碎片的比率可以通過 mem_fragmentation_ratio 的值看出。

2)當 used > rss 時,表示 Redis 的部分內存被操作系統換出到交換空間了,在這種情況下,操作可能會產生明顯的延遲。

當 Redis 釋放內存時,分配器可能會,也可能不會,將內存返還給操作系統。

如果 Redis 釋放了內存,卻沒有將內存返還給操作系統,那麽 used_memory 的值可能和操作系統顯示的 Redis 內存占用並不一致。查看 used_memory_peak 的值可以驗證這種情況是否發生。

 

Redis修改最大內存和查詢內存使用情況