Redis Info 命令(建议收藏)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
前言:揭开 Redis Info 命令的神秘面纱
Redis 是一款高性能的内存数据库,广泛应用于缓存、消息队列、实时计数器等场景。作为开发者,我们常常需要了解 Redis 实例的运行状态、配置参数和资源使用情况。此时,Redis Info 命令便成为不可或缺的工具。它如同 Redis 的“体检报告”,能帮助我们快速定位问题、优化性能。本文将从基础到进阶,结合实例和代码,深入解析这个命令的实用价值。
一、Redis Info 命令:基础用法与核心功能
1.1 命令的基本语法
INFO
是 Redis 的内置命令,用于获取服务器的详细信息。其语法有两种形式:
- 通用模式:
INFO
直接执行该命令,会返回 Redis 服务器的所有信息。 - 分段模式:
INFO <section>
通过指定参数(如memory
、clients
),仅返回特定部分的信息。
示例代码:
127.0.0.1:6379> INFO
redis_version:7.0.5
redis_mode:standalone
...
1.2 命令的核心功能
Redis Info 命令返回的数据分为多个逻辑段(sections),每个段对应不同的系统指标:
- Server:Redis 版本、运行模式、配置文件路径等基础信息。
- Memory:内存使用情况、交换空间(swap)状态等。
- Clients:当前连接的客户端数量及资源占用。
- Persistence:RDB 和 AOF 持久化状态。
- Replication:主从复制的配置与状态。
类比说明:
想象 Redis 是一个“智能仓库”,INFO
命令就像仓库管理员的巡检表,能告诉你货架的容量(Memory)、进出货记录(Clients)、库存策略(Persistence)等信息。
二、深入解析:Redis Info 的关键指标与应用场景
2.1 内存管理:Memory Section
核心参数示例:
| 参数名 | 含义 |
|---------------------|----------------------------------------------------------------------|
| used_memory | Redis 进程占用的总内存(字节) |
| used_memory_peak | Redis 进程曾达到的内存峰值(字节) |
| mem_fragmentation_ratio | 内存碎片率(used_memory_rss / used_memory) |
场景案例:
假设通过 INFO memory
发现 mem_fragmentation_ratio
超过 1.5,说明内存碎片严重,可能需要重启 Redis 或调整内存分配策略。
2.2 客户端监控:Clients Section
关键指标:
connected_clients
:当前连接的客户端数量。blocked_clients
:被阻塞的客户端(如执行BLPOP
命令时)。
问题诊断:
若 connected_clients
突然激增,可能是客户端未正确关闭连接,或遭遇了 DDoS 攻击。此时可通过 CLIENT LIST
命令进一步排查异常连接。
2.3 持久化状态:Persistence Section
参数示例:
- RDB:
rdb_last_save_time
:最后一次成功生成 RDB 快照的时间戳。
rdb_changes_since_last_save
:自上次保存后的数据修改次数。 - AOF:
aof_current_size
:当前 AOF 文件的大小(字节)。
aof_rewrite_in_progress
:是否正在进行 AOF 重写。
优化建议:
若发现 rdb_last_save_time
与当前时间差值过大,需检查磁盘空间或 Redis 配置中的 save
指令是否合理。
三、进阶技巧:结合场景灵活使用 Redis Info
3.1 动态监控与自动化脚本
通过脚本周期性执行 INFO
命令,并将关键指标写入日志或监控系统。例如,用 Python 编写脚本监控内存使用率:
代码示例:
import redis
import time
r = redis.Redis(host='localhost', port=6379)
while True:
info = r.info('memory')
print(f"Used Memory: {info['used_memory'] / 1024 / 1024:.2f} MB")
time.sleep(60)
3.2 性能瓶颈定位
当 Redis 响应变慢时,可通过以下步骤排查:
- 执行
INFO replication
,检查主从同步是否延迟。 - 检查
INFO memory
中的used_memory_peak
,确认内存是否接近配置上限。 - 使用
INFO stats
中的instantaneous_ops_per_sec
,判断 QPS 是否超出服务器承载能力。
3.3 与 Redis 配置命令的协同使用
- 配置对比:通过
INFO config
查看动态配置项的当前值,与CONFIG GET
命令的结果对比。 - 参数调整:例如,若发现
maxmemory
已达到限制,可通过CONFIG SET maxmemory 2GB
扩容。
四、对比与扩展:Redis Info 与其他命令的关系
4.1 与 CONFIG
命令的区别
- INFO:提供运行时的实时状态,不可修改配置。
- CONFIG:用于读取或修改 Redis 的配置参数(如
maxmemory-policy
)。
4.2 与 SLOWLOG
的互补性
SLOWLOG
记录执行时间超过阈值的命令,而 INFO
的 slowlog
段可直接显示最近的慢查询。两者结合能更全面地分析性能瓶颈。
4.3 与监控工具的集成
将 INFO
的输出整合到 Prometheus 或 Grafana 中,可实现可视化监控。例如,通过 redis_exporter
定期抓取指标,生成内存使用趋势图。
结论:Redis Info 命令的实战价值与未来展望
Redis Info 命令是开发者与运维人员的“瑞士军刀”,它通过结构化数据揭示了 Redis 的运行全貌。无论是排查内存泄漏、优化持久化策略,还是监控客户端行为,都能提供关键线索。
随着 Redis 的版本迭代,INFO
的输出内容也在扩展(例如新增了 module
段用于展示模块信息)。建议读者定期查阅官方文档,结合实际场景灵活运用。
行动建议:
- 在开发环境中尝试执行
INFO
并解析输出。 - 将关键指标纳入日常监控体系。
- 结合
redis-cli
的--stat
模式,体验实时性能视图。
掌握 Redis Info 命令,不仅能提升问题解决效率,更能帮助你构建更健壮的 Redis 应用。