通过redis-cli连接服务器后,通过info命令可以查看内存使用情况:

127.0.0.1:6379> info memory
# Memory
# redis分配的内存总量,包括虚拟内存(字节)
used_memory:4139104
used_memory_human:3.95M
# 占系统操作的内存,不包括虚拟内存(字节)
used_memory_rss:5713920
used_memory_rss_human:5.45M
used_memory_peak:4163520
used_memory_peak_human:3.97M
used_memory_peak_perc:99.41%
used_memory_overhead:846894
used_memory_startup:786456
used_memory_dataset:3292210
used_memory_dataset_perc:98.20%

total_system_memory:16658657280
total_system_memory_human:15.51G

used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction

# 内存碎片化比例,如果小于0说明使用了虚拟内存
mem_fragmentation_ratio:1.38
# redis 使用的内存分配器
mem_allocator:jemalloc-4.0.3

active_defrag_running:0
lazyfree_pending_objects:0

info 命令可以查询redis服务器的很多信息,包括服务器基本信息、CPU、内存、持久化、客户端 连接信息等等

memory 是参数,表示只显示内存相关的信息。

重要参数说明:

  • used_memory:redis分配的内存总量,包括虚拟内存(字节)
  • used_memory_rss:占系统操作的内存,不包括虚拟内存(字节)
  • mem_fragmentation_ratio: used_memory_rss/used_memory

mem_fragmentation_ratio一般大于1,且该值越大,内存碎片比例越大。

mem_fragmentation_ratio<1,说明Redis使用了虚拟内存(swap),由于虚拟内存的媒介是磁盘,比内存速度要慢很多,当这种情况出现时,应该及时排查,如果内存不足应该及时处理,如增加Redis节 点、增加Redis服务器的内存、优化应用等。

一般来说,mem_fragmentation_ratio在1.03左右是比较健康的状态(对于jemalloc来说)

  • mem_allocator:Redis使用的内存分配器,分配器包含:libc, jemalloc, tcmalloc, 默认是jemalloc