现象:客户端无法连接Redis,返回Connection refused
或超时错误。
telnet
ps -ef | grep redis
# 检查bind和protected-mode配置
redis-cli config get bind
redis-cli config get protected-mode
redis-cli config get maxclients
redis-cli info clients # 查看当前连接数
tail -f /var/log/redis/redis.log
解决方案:
bind
绑定地址或关闭protected-mode
(仅测试环境)maxclients
并优化客户端连接池配置iptables -L -n
现象:Redis响应变慢,业务侧出现超时。
redis-cli --latency
检测基准延迟redis-cli config set slowlog-log-slower-than 1000 # 设置阈值(微秒)
redis-cli slowlog get 10 # 查看最近10条慢查询
redis-cli info memory # 关注used_memory、mem_fragmentation_ratio
redis-cli info persistence | grep rdb_last_bgsave_status
redis-cli info persistence | grep aof_last_bgrewrite_status
解决方案:
KEYS *
、大范围HGETALL
)appendfsync always
)现象:Redis触发OOM(Out Of Memory),无法写入新数据。
redis-cli info memory | grep used_memory_human
redis-cli --bigkeys # 扫描大Key(生产环境慎用)
redis-cli info memory | grep mem_fragmentation_ratio
# >1.5 表示碎片较高
redis-cli config get maxmemory-policy
解决方案:
maxmemory
和淘汰策略(如allkeys-lru
)config set activedefrag yes
现象:主从节点数据不一致,或缓存与DB不一致。
redis-cli info replication
# 关注slave0:offset与master_repl_offset差值
redis-cli config get hz # 默认10,控制过期键清理频率
redis-check-rdb
或redis-check-aof
验证持久化文件解决方案:
repl-timeout
EXPIRE
命令设置合理TTL现象:集群节点故障、槽位迁移失败。
redis-cli --cluster check <node_ip>:<port>
redis-cli cluster nodes
iftop -i eth0
解决方案:
redis-cli --cluster reshard
scan
扫描清理无用KeyBLPOP
长时间阻塞)info
、slowlog
、memory
redis-cli --bigkeys
、redis-benchmark
附录:常用命令速查表
# 实时监控
redis-cli monitor
# 内存分析
redis-cli memory stats
# 连接池诊断
redis-cli client list
通过系统化的排查思路和工具链,Redis线上问题将不再令人头疼。建议收藏本文,随时应对突发状况!
获取更多技术干货,欢迎关注博主!