redis info memory命令的各项参数解释汇总

本文详细解释了Redis的各种内存使用指标,包括used_memory、used_memory_rss、used_memory_peak等核心概念,并介绍了这些指标如何帮助理解Redis实例的内存使用情况。

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操作,在等待被实际回收内容的键个数


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2639249/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15498/viewspace-2639249/

<think>我们正在讨论Redis的`redis-cli info memory`命令在Linux系统中的使用。根据用户要求,需要详细解释命令的作用和输出内容。 引用[1]提到redis-server有--test-memory选项用于检测内存分配,但用户问题聚焦于redis-cli的info memory命令。 引用[2]介绍了redis-rdb-cli工具,但同样与当前问题无关。 因此,我们将专注于`redis-cli info memory`命令本身。 步骤: 1. 解释命令的作用:该命令用于获取Redis实例的内存使用情况信息。 2. 说明在Linux系统中运行该命令的方式(通常通过终端连接Redis服务器执行)。 3. 详细解析输出中的各个字段及其含义。 注意:由于Redis的版本更新,输出字段可能略有不同,但核心字段通常保持一致。 典型输出字段解析(以Redis 5.0及以上版本为例): - used_memoryRedis分配器分配的内存总量,即Redis存储数据实际使用的内存(单位:字节)。 - used_memory_human:以人类可读格式显示的used_memory。 - used_memory_rss:从操作系统角度看到的Redis进程占用的物理内存(即常驻内存大小)。 - used_memory_rss_human:以人类可读格式显示的used_memory_rss。 - used_memory_peak:Redis的内存消耗峰值(以字节为单位)。 - used_memory_peak_human:以人类可读格式显示的used_memory_peak。 - used_memory_peak_perc:使用内存占峰值的百分比。 - used_memory_overhead:Redis为了维护数据集的内部机制所需的内存开销,包括所有内部数据结构的内存开销。 - used_memory_startup:Redis服务器启动时消耗的内存。 - used_memory_dataset:数据实际占用的内存大小,即used_memory减去used_memory_overhead。 - used_memory_dataset_perc:used_memory_dataset占used_memory_overhead的百分比。 - total_system_memory:整个系统的内存总量。 - total_system_memory_human:以人类可读格式显示的系统总内存。 - used_memory_lua:Lua脚本引擎占用的内存。 - used_memory_lua_human:以人类可读格式显示的Lua内存占用。 - maxmemory:配置文件中设置的最大内存值(单位:字节),0表示没有设置最大内存限制。 - maxmemory_human:以人类可读格式显示的最大内存配置。 - maxmemory_policy:达到最大内存时采取的淘汰策略(例如:noeviction, allkeys-lru, volatile-lru等)。 - mem_fragmentation_ratio:内存碎片率(used_memory_rss / used_memory)。大于1表示有内存碎片,小于1表示内存交换到了磁盘(但Redis通常不会交换)。 - mem_allocator:Redis使用的内存分配器,默认为jemalloc或libc。 注意:以上字段可能会因Redis版本不同而有所增减。 在Linux系统中,我们可以通过以下步骤执行: 1. 打开终端。 2. 使用`redis-cli`连接到Redis服务器(如果Redis服务器在本地,默认端口,则直接输入`redis-cli`即可)。 3. 在redis-cli提示符下输入:`info memory` 或者直接使用:`redis-cli info memory` 示例输出(部分): ``` # redis-cli info memory used_memory:1001264 used_memory_human:977.80K used_memory_rss:1064960 used_memory_rss_human:1.02M ... ``` 解释: 这些信息对于监控Redis的内存使用情况、诊断内存相关的问题(如内存泄漏、内存碎片等)非常重要。 例如,如果`mem_fragmentation_ratio`过高(比如大于1.5),则说明存在较严重的内存碎片,可能需要采取措施(如重启Redis)来减少碎片。 另外,如果`used_memory`接近或超过`maxmemory`,并且`maxmemory_policy`被设置为某种淘汰策略,那么Redis可能会开始淘汰键以释放内存。 因此,定期检查内存信息是维护Redis健康运行的重要部分。 生成相关问题: 1. Redis内存碎片率过高怎么办? 2. 如何配置Redis的最大内存限制和淘汰策略? 3. Redis的内存使用量突然增加可能是什么原因? 4. Redis的持久化操作(如RDB或AOF)对内存使用有什么影响?</think>### Redis `redis-cli info memory` 命令详解(Linux 环境) `redis-cli info memory` 是 Redis 提供的诊断命令,用于获取 Redis 服务器的**详细内存使用统计**。在 Linux 系统中,该命令的输出包含关键指标,帮助管理员监控内存分配、碎片情况和潜在风险。以下是核心输出字段的解析: --- #### **核心指标解析** 1. **`used_memory`** - **含义**:Redis 实际分配的内存总量(单位:字节),包含数据、内部数据结构开销等。 - **示例**:`used_memory:1024000`(约 1MB) - **重要性**:反映当前数据占用的真实内存量。 2. **`used_memory_rss`** - **含义**:从操作系统角度看到的 Redis 进程占用的物理内存(Resident Set Size)。 - **与 `used_memory` 的关系**: - 若 `used_memory_rss > used_memory` → 存在内存碎片 - 若 `used_memory_rss < used_memory` → 部分内存被交换到磁盘(需警惕性能下降) - **计算公式**:`内存碎片率 = used_memory_rss / used_memory` 3. **`mem_fragmentation_ratio`** - **含义**:内存碎片率(基于 `used_memory_rss / used_memory` 计算)。 - **健康范围**: - `1.0~1.5`:正常 - `>1.5`:高碎片(可通过重启缓解) - `<1.0`:内存被交换到磁盘(需紧急处理)[^1] 4. **`maxmemory`** - **含义**:`redis.conf` 中配置的最大内存上限(单位:字节)。`0` 表示未设置上限(危险!可能导致 OOM)。 - **运维建议**:生产环境必须设置 `maxmemory` 并配合淘汰策略(如 `allkeys-lru`)。 5. **`maxmemory_policy`** - **含义**:内存达到上限时的数据淘汰策略(如 `volatile-lru`、`allkeys-random`)。 - **常见策略**: ```bash volatile-lru # 对过期键使用 LRU 淘汰 allkeys-lru # 对所有键使用 LRU 淘汰 noeviction # 不淘汰,返回错误(默认) ``` 6. **`used_memory_dataset`** - **含义**:实际存储数据占用的内存(不含 Redis 自身开销)。 - **计算方式**:`used_memory_dataset = used_memory - used_memory_overhead` --- #### **其他关键字段** | 字段 | 说明 | |--------------------------|----------------------------------------------------------------------| | `used_memory_peak` | Redis 运行以来的内存使用峰值(监控内存泄漏关键指标) | | `used_memory_lua` | Lua 脚本引擎占用的内存 | | `total_system_memory` | 操作系统总内存量(如 `total_system_memory:17179869184` = 16GB) | | `active_defrag_running` | 是否正在运行自动内存碎片整理(`1`=进行中) | --- #### **Linux 环境使用示例** ```bash # 连接到本地 Redis 并获取内存信息 redis-cli info memory # 连接到远程 Redis(端口 6379) redis-cli -h 192.168.1.100 -p 6379 info memory # 仅关注碎片率(结合 awk 过滤) redis-cli info memory | grep 'mem_fragmentation_ratio' ``` --- #### **运维建议** 1. **高碎片处理**: - 重启 Redis(临时方案) - 启用自动碎片整理:配置 `activedefrag yes`(需 Redis 4.0+)[^1] 2. **内存不足**: - 检查 `maxmemory` 是否合理 - 优化淘汰策略(如从 `noeviction` 改为 `allkeys-lru`) 3. **Swap 风险**: 若 `mem_fragmentation_ratio < 1`,需增加物理内存或减少 Redis 数据量。 --- ### 相关问题 1. Redis 内存碎片率超过 1.5 时如何安全清理? 2. 如何配置 Redis 的淘汰策略以避免内存溢出? 3. `used_memory_rss` 与 `used_memory` 差异过大的根本原因是什么? 4. Redis 持久化(RDB/AOF)对内存使用有哪些影响? [^1]: 引用 Redis 官方文档:内存优化与碎片整理机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值