redis-cli -p 6379 info命令详解
Redis是常用的高性能键值对数据库,在日常运维和性能排查中,我们经常需要通过redis-cli -p 6379 info命令获取Redis实例的运行状态信息。该命令会返回Redis服务器的各类统计指标,帮助开发者了解实例的内存使用、命令执行、持久化状态等核心情况。
命令基本使用
redis-cli是Redis自带的命令行客户端工具,-p 6379参数用于指定连接的Redis实例端口为6379(Redis默认端口即为6379),info是Redis服务器的内置命令,用于获取服务器信息。
执行该命令的基本方式如下:
# 连接本地6379端口的Redis实例并获取所有信息 redis-cli -p 6379 info # 也可以先进入redis-cli交互模式,再执行info命令 redis-cli -p 6379 127.0.0.1:6379> info
info命令返回的信息分类
info命令返回的信息按照功能分为多个大类,可通过在info后添加分类名获取指定类别的信息,例如info memory仅返回内存相关数据。常用分类如下:
server:Redis服务器的基本信息,包括版本、运行模式、进程ID等
clients:客户端连接相关的统计信息
memory:内存使用相关的统计信息
persistence:持久化相关的状态信息,包括RDB和AOF的情况
stats:服务器运行期间的通用统计信息,如命令执行次数、网络流量等
replication:主从复制相关的信息
cpu:CPU使用相关的统计信息
keyspace:数据库相关的统计信息,如键数量、过期键数量等
all:返回所有分类的信息,也就是默认执行
info时的返回内容default:返回默认的常用分类信息,比all返回的内容少一些非核心指标
核心分类信息详解
1. server分类
该分类主要返回Redis服务器的基础属性,常见字段含义如下:
| 字段名 | 含义说明 |
|---|---|
| redis_version | 当前Redis服务器的版本号 |
| redis_mode | 运行模式,standalone表示单机模式,sentinel表示哨兵模式,cluster表示集群模式 |
| process_id | Redis服务器进程的ID |
| tcp_port | Redis监听的TCP端口号 |
| uptime_in_seconds | Redis服务器自启动以来运行的秒数 |
| uptime_in_days | Redis服务器自启动以来运行的天数 |
2. memory分类
内存相关指标是排查Redis内存溢出、内存使用异常的核心依据,常见字段含义如下:
| 字段名 | 含义说明 |
|---|---|
| used_memory | Redis分配器分配的内存总量,单位是字节,也就是Redis实际使用的内存大小 |
| used_memory_human | 以人类可读的格式显示used_memory的大小,例如1.2G |
| used_memory_peak | Redis内存使用的峰值,单位是字节 |
| used_memory_peak_human | 以人类可读的格式显示used_memory_peak的大小 |
| maxmemory | Redis配置的最大内存限制,单位是字节,0表示不限制 |
| maxmemory_policy | 内存达到maxmemory时的淘汰策略,如noeviction、allkeys-lru等 |
| mem_fragmentation_ratio | 内存碎片率,等于used_memory_rss / used_memory,值过大说明内存碎片较多 |
3. stats分类
该分类包含服务器运行的核心统计指标,常见字段含义如下:
| 字段名 | 含义说明 |
|---|---|
| total_connections_received | 服务器启动以来接收到的连接总数 |
| total_commands_processed | 服务器启动以来执行的命令总数 |
| instantaneous_ops_per_sec | 每秒执行的命令数,即当前的QPS |
| total_net_input_bytes | 服务器启动以来接收的网络输入总字节数 |
| total_net_output_bytes | 服务器启动以来发送的网络输出总字节数 |
| rejected_connections | 因超出最大客户端连接数而被拒绝的连接数 |
| expired_keys | 服务器启动以来过期的键总数 |
| evicted_keys | 因内存达到上限被淘汰的键总数 |
4. keyspace分类
该分类展示各个数据库(默认16个,编号0-15)的键相关统计,常见字段含义如下:
| 字段名 | 含义说明 |
|---|---|
| db0:keys | 数据库0中当前的键总数 |
| db0:expires | 数据库0中设置了过期时间的键数量 |
| db0:avg_ttl | 数据库0中设置了过期时间的键的平均剩余生存时间,单位是毫秒 |
实际使用示例
以下是获取指定分类信息的示例:
# 仅获取内存相关信息 redis-cli -p 6379 info memory # 仅获取客户端连接相关信息 redis-cli -p 6379 info clients # 仅获取键空间相关信息 redis-cli -p 6379 info keyspace
也可以通过管道组合其他命令过滤需要的信息,例如查看当前Redis的内存使用峰值:
redis-cli -p 6379 info memory | grep used_memory_peak_human
注意事项
1. 执行info命令对Redis性能影响极小,可放心在日常监控中使用,但如果是获取所有分类信息(all模式),返回内容较多,建议按需指定分类获取。
2. 如果Redis实例设置了密码,需要先通过auth 密码命令认证,再执行info命令,例如:
redis-cli -p 6379 127.0.0.1:6379> auth your_password OK 127.0.0.1:6379> info
3. 不同Redis版本返回的info字段可能存在差异,建议结合对应版本的官方文档解读字段含义,官方文档地址为https://www.ipipp.com。
4. 线上环境如果需要长期监控Redis状态,不建议频繁手动执行该命令,可通过Prometheus等监控工具定期拉取info信息实现自动化监控。