redis 内存使用详情查询

1.MEMORY STATS

在Redis中,执行MEMORY STATS命令查询内存使用详情。
Redis实例的内存开销主要由两部分组成:
业务数据的内存开销,该部分一般作为重点分析对象。
非业务数据的内存开销,例如主备复制的积压缓冲区、Redis进程初始化消耗的内存等。

 1) "peak.allocated" //Redis进程自启动以来消耗内存的峰值。
 2) (integer) 79492312
 3) "total.allocated" //Redis使用其分配器分配的总字节数,即当前的总内存使用量。
 4) (integer) 79307776
 5) "startup.allocated" //Redis启动时消耗的初始内存量。
 6) (integer) 45582592
 7) "replication.backlog" //复制积压缓冲区的大小。
 8) (integer) 33554432
 9) "clients.slaves" //主从复制中所有从节点的读写缓冲区大小。
10) (integer) 17266
11) "clients.normal" //除从节点外,所有其他客户端的读写缓冲区大小。
12) (integer) 119102
13) "aof.buffer" //AOF持久化使用的缓存和AOF重写时产生的缓存。
14) (integer) 0
15) "db.0"  //业务数据库的数量。
16) 1) "overhead.hashtable.main" //当前数据库的hash链表开销内存总和,即元数据内存。
    2) (integer) 144
    3) "overhead.hashtable.expires" //用于存储key的过期时间所消耗的内存。
    4) (integer) 0
17) "overhead.total" //数值=startup.allocated+replication.backlog+clients.slaves+clients.normal+aof.buffer+db.X。
18) (integer) 79273616
19) "keys.count" //当前Redis实例的key总数
20) (integer) 2
21) "keys.bytes-per-key" //当前Redis实例每个key的平均大小,计算公式:(total.allocated-startup.allocated)/keys.count。
22) (integer) 16862592
23) "dataset.bytes" //纯业务数据占用的内存大小。
24) (integer) 34160
25) "dataset.percentage" //纯业务数据占用的内存比例,计算公式:dataset.bytes*100/(total.allocated-startup.allocated)。
26) "0.1012892946600914"
27) "peak.percentage" //当前总内存与历史峰值的比例,计算公式:total.allocated*100/peak.allocated。
28) "99.767860412597656"
29) "fragmentation" //内存的碎片率。
30) "0.45836541056632996"

2.INFO MEMORY

也可以使用INFO MEMORY查看内存详情

used_memory:由 Redis 分配器分配的内存总量,包含了redis进程内部的开销和数据占用的内存,以字节(byte)为单位
used_memory_human:以更直观的可读格式显示返回使用的内存量。
used_memory_rss:rss是Resident Set Size的缩写,表示该进程所占物理内存的大小,是操作系统分配给Redis实例的内存大小。
used_memory_rss_human:以更直观的可读格式显示该进程所占物理内存的大小。
used_memory_peak:redis的内存消耗峰值(以字节为单位)
used_memory_peak_human:以更直观的可读格式显示返回redis的内存消耗峰值
used_memory_peak_perc:使用内存达到峰值内存的百分比,即(used_memory/ used_memory_peak) *100%
used_memory_overhead:Redis为了维护数据集的内部机制所需的内存开销,包括所有客户端输出缓冲区、查询缓冲区、AOF重写缓冲区和主从复制的backlog。
used_memory_startup:Redis服务器启动时消耗的内存
used_memory_dataset:数据占用的内存大小,即used_memory-used_memory_overhead
used_memory_dataset_perc:数据占用的内存大小的百分比,100%*(used_memory_dataset/(used_memory-used_memory_startup))
total_system_memory:整个系统内存
total_system_memory_human:以更直观的可读格式显示整个系统内存
used_memory_lua:Lua脚本存储占用的内存
used_memory_lua_human:以更直观的可读格式显示Lua脚本存储占用的内存
maxmemory:Redis实例的最大内存配置
maxmemory_human:以更直观的可读格式显示Redis实例的最大内存配置
maxmemory_policy:当达到maxmemory时的淘汰策略
mem_fragmentation_ratio:内存的碎片率,used_memory_rss/used_memory --4.0版本之后可以使用memory purge手动回收内存
mem_allocator:内存分配器
active_defrag_running:表示没有活动的defrag任务正在运行,1表示有活动的defrag任务正在运行(defrag:表示内存碎片整理)
lazyfree_pending_objects: 表示redis执行lazy free操作,在等待被实际回收内容的键个数

https://www.lshell.com/posts/detailed-redis-info/#google_vignette

3.内存碎片
https://blog.csdn.net/jiangxiulilinux/article/details/104552852

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部