Redis作为高性能的内存数据库,其运行状态的核心在于事件循环和单线程模型。INFO命令显示的used_memory和used_memory_rss反映内存使用,connected_clients显示连接数,uptime_in_seconds显示运行时间。通过redis-cli --latency监控延迟,键值统计如keys=1000000表明负载高。优化运行状态需关注内存碎片率<1.5,evicted_keys为0避免驱逐,确保高可用集群模式下所有节点role=slave或master正常。
内存状态详解
Redis的内存状态是高性能的关键,used_memory_human显示当前使用内存,如1.2G。峰值used_memory_peak_human为1.5G,碎片率mem_fragmentation_ratio理想在1.1左右超过1.5需优化。allocator如jemalloc高效管理内存,避免malloc碎片。持久化时内存峰值会激增,需预留20%内存裕量。
客户端连接激情
connected_clients当前连接数,峰值可以上万,maxclients默认10000可调高。blocked_clients显示阻塞队列,超过0需排查慢查询。rejected_connections被拒连接数为0才健康。使用CONFIG SET maxclients 50000动态调整,支持keepalive减少TCP开销。
持久化与性能形态
rdb_changes_since_last_save显示自上次RDB以来变更数,rdb_last_save_time_sec上次保存耗时秒数。aof_enabled=1时aof_rewrite_in_progress监控重写状态。rdb_bgsave_in_progress后台保存进行中,确保CPU不超载。最佳实践:RDB全量备份+AOF增量日志,结合fsync策略everysec平衡性能与安全。
集群运行状态
cluster_enabled=1时,cluster_state=ok表示健康,cluster_slots_assigned匹配16384。cluster_known_nodes列出所有节点,role=master有connected_slaves=2。使用cluster nodes命令查看详细拓扑,迁移槽时cluster_current_epoch递增确保一致性。
慢查询与延迟解析
slowlog_len慢查询日志长度,命令如SLOWLOG GET 10查看Top10慢命令。latency_seconds总延迟时间,histogram显示分布。高延迟常见于大key、keys *扫描、fork阻塞。设置CONFIG SET slowlog-log-slower-than 10000记录超10ms查询,优化pipeline批量执行。
CPU与网络激情
instantaneous_ops_per_sec瞬时QPS峰值可达10w+,used_cpu_sys CPU系统时间占比低才好。instantaneous_net_input_bytes网络输入速率,优化TCP backlog避免丢包。单线程CPU亲和性绑定核心,禁用HyperThread提升性能。
FAQ
Q: 如何快速检查Redis健康状态?
A: 执行INFO all,一眼看used_memory、connected_clients、uptime和rejected_connections。
Q: 内存碎片率高怎么处理?
A: 重启Redis或执行MEMORY PURGE,有效碎片率超1.5需检查数据类型分布。
Q: 慢查询如何定位?
A: SLOWLOG GET查看日志,常见大key用SCAN迭代避免keys *。
Q: 集群节点故障恢复?
A: cluster failovers显示 failover记录,手动CLUSTER FORGET坏节点再添加。