Redis
Redis故障诊断
慢日志查询
安装、启动与连接
常用命令
常用命令2
主从
高可用(SENTINEL)
持久化(RDB、AOF)
集群(CLUSTER)
集群扩容与收缩
管理Redis
备份与恢复
内存使用情况
客户端
数据迁移
Redis配置
Python使用redis
Redis监控指标
本文档使用MrDoc发布
返回首页
-
+
内存使用情况
2020年4月17日 18:44
admin
##使用情况 >###INFO MEMORY redis-cli info memory >![](/media//202004/2020-04-17182934202955.png) >|参数|说明| |--|--| |used_memory|由 Redis 分配器分配的内存总量,包含了redis进程内部的开销和数据占用的内存,以字节(byte)为单位 |used_memory_human|已更直观的单位展示分配的内存总量。 |used_memory_rss|向操作系统申请的内存大小。与 top 、 ps等命令的输出一致。 |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-sed_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 |mem_allocator|内存分配器 |active_defrag_running|表示没有活动的defrag任务正在运行,1表示有活动的defrag任务正在运行(defrag:表示内存碎片整理) |lazyfree_pending_objects|0表示不存在延迟释放的挂起对象 ##消耗情况 >###MEMORY STATS redis-cli memory stats >![](/media//202004/2020-04-17183717399069.png) >|参数|说明| |--|--| |peak.allocated|redis启动到现在,最多使用过多少内存。 |total.allocated|当前使用的内存总量。 |startup.allocated|redis启动初始化时使用的内存,有很多读者会比较奇怪,为什么我的redis启动以后什么都没做就已经占用了几十MB的内存?这是因为redis本身不仅存储key-value,还有其他的内存消耗,比如共享变量、主从复制、持久化和db元信息,下面各项会有详细介绍。 |replication.backlog|主从复制backlog使用的内存,默认10MB,backlog只在主从断线重连时发挥作用,主从复制本身并不依赖此项。 |clients.slaves|主从复制中所有slave的读写缓冲区,包括output-buffer(也即输出缓冲区)使用的内存和querybuf(也即输入缓冲区) |clients.normal|除slave外所有其他客户端的读写缓冲区。 |aof.buffer|此项为aof持久化使用的缓存和aofrewrite时产生的缓存之和,当然如果关闭了appendonly那这项就一直为0: |db.0|redis每个db的元信息使用的内存,这里只使用了db0,所以只打印了db0的内存使用状态,当使用其他db时也会有相应的信息。 |overhead.total|3-8项之和:startup.allocated+replication.backlog+clients.slaves+clients.normal+aof.buffer+dbx |dataset.bytes|所有数据所使用的内存——也即total.allocated - overhead.total——当前内存使用量减去管理类内存使用量。 |dataset.percentage|所有数据占比,这里并没有直接使用total.allocated做分母,而是除去了redis启动初始化的内存,计算公式为:100 * dataset.bytes / (total.allocated - startup.allocated) |keys.count|redis当前存储的key总量 |keys.bytes-per-key|平均每个key的内存大小 |peak.percentage|当前使用内存与历史最高值比例 |fragmentation|内存碎片率 ##键内存使用情况 redis> MEMORY USAGE <key> #计算一个键的内存使用情况 redis-cli --bigkeys #查找最大的键
分享到: