Redis日志查看与分析指南
Redis日志文件路径由redis.conf中的logfile参数指定,默认通常为/var/log/redis/redis.log(或/var/log/redis.log)。可通过以下命令快速确认:
# 查找redis.conf文件位置
redis-server --help | grep redis.conf
# 在配置文件中搜索logfile路径
cat /etc/redis/redis.conf | grep logfile
使用tail -f命令可实时跟踪日志文件的新增内容,便于监控Redis实时运行状态:
tail -f /var/log/redis/redis.log
结合grep命令可快速筛选所需日志信息,例如查找错误日志、警告日志或包含特定关键词的日志:
# 查找所有错误日志(不区分大小写)
grep -i "error" /var/log/redis/redis.log
# 查找所有警告日志
grep "warning" /var/log/redis/redis.log
# 查找包含"slow"关键词的日志(如慢查询)
grep "slow" /var/log/redis/redis.log
当日志文件较大时,使用less命令可分页查看,支持上下翻页、搜索等功能:
less /var/log/redis/redis.log
# 在less中搜索关键词(按/输入关键词,按n跳转下一个匹配项)
/keyword
通过grep和awk组合,可提取Redis命令的执行时间及耗时,分析慢查询问题:
grep "command" /var/log/redis/redis.log | awk '{print $1, $2, $9}'
# 示例输出:2025-10-31 14:30:01.123 0.002ms(时间+命令耗时)
使用grep -c统计特定错误类型的数量,快速识别高频问题:
grep -i "connection refused" /var/log/redis/redis.log | wc -l
# 统计"connection refused"错误的数量
通过管道将tail -f与grep结合,实时监控新增的错误日志,及时响应异常:
tail -f /var/log/redis/redis.log | grep -i "error"
查找Redis连接数的变化日志,了解客户端连接情况(需确保日志中开启了连接数记录):
grep "connected clients" /var/log/redis/redis.log
# 示例输出:connected clients: 10(当前连接数)
根据环境需求调整loglevel,平衡日志详细程度与磁盘占用:
notice(默认)或warning,仅记录重要信息和警告,减少日志量。debug或verbose,记录详细调试信息,便于问题排查。redis.conf中的loglevel参数,或通过命令行动态设置(重启后失效):# 动态设置日志级别(临时生效)
redis-cli CONFIG SET loglevel notice
# 永久生效:修改配置文件后重启Redis
echo "loglevel notice" >> /etc/redis/redis.conf
sudo systemctl restart redis
避免日志文件过大导致磁盘空间不足,可通过以下两种方式分割日志:
log-file-size(单位:字节),当日志文件达到指定大小时自动创建新文件(如10MB):logfile /var/log/redis/redis.log
log-file-size 10485760 # 10MB
log-file-period(单位:秒),按固定时间间隔分割日志(如每天):logfile /var/log/redis/redis.log
log-file-period 86400 # 每天分割一次
通过logrotate实现日志的自动轮换、压缩和删除,进一步优化日志管理:
创建/etc/logrotate.d/redis配置文件,添加以下内容:
/var/log/redis/redis.log {
daily # 每天轮换
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(如gzip)
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮换
create 640 redis redis # 创建新日志文件并设置权限
}
保存后,logrotate会自动按配置执行日志轮换(可通过logrotate -vf /etc/logrotate.d/redis手动触发)。
--ldb选项加载日志文件进行分析(如查看最近的10条日志):./redis-cli --ldb /var/log/redis/redis.log
> ldb.log(10) # 查看最近的10条日志