Appearance
慢查询日志
配置
默认配置
redis
slowlog-log-slower-than 10000 # 超过10000微秒(10ms)记录
slowlog-max-len 128 # 最多保存128条生产建议
redis
slowlog-log-slower-than 1000 # 1ms
slowlog-max-len 1000 # 保存更多查看慢查询
redis
SLOWLOG GET 10 # 获取最近10条
SLOWLOG LEN # 当前数量
SLOWLOG RESET # 清空输出格式
1) (integer) 12 # 日志ID
2) (integer) 1603563428 # 时间戳
3) (integer) 1200 # 耗时(微秒)
4) 1) "GET" # 命令
2) "user:12345" # key分析优化
常见慢原因
- O(N)操作:KEYS、SCAN
- 大key:HGETALL、LRANGE 0 -1
- 慢命令:SORT、SINTER
- 数据量:大scan结果
优化方案
redis
-- 替代KEYS
SCAN 0 MATCH user:* COUNT 1000
-- 避免大key
LRANGE list 0 99 # 分页获取
-- 减少慢命令
使用Lua脚本代替多次命令面试考点
Q: 为什么慢?
- 复杂命令
- 大key操作
- 内存不足swap
- 网络延迟
Q: 如何优化?
- 用scan替代keys
- 拆分大key
- Pipeline批量
- 减少网络往返
