Redis实战(6)-- 慢查询运用与理解
介绍
类似于对应Mysql,记录插入耗时多于一定时间限制的命令语句,便于发现性能缺陷以及优化对应处理,也便于运维进行相关情况知晓。
Redis客户端执行命令分为以下部分:
而慢查询通常只统计执行命令时间,所以慢查询不代表代码有待优化(可能是网络等原因),具体情况还需进行进一步进行分析。
慢查询配置
(1)动态设置阈值
慢查询的阈值默认值是10毫秒
执行:config set slowlog-log-slower-than 20000 可以进行设置对应的慢查询阈值为20s
在进行设置完对应的阈值后,可以进行config rewrite 指令操作进行配置持久化。
【注意】slowlog-log-slower-than = 0表示所有命令都进行记录
Slowlog-log-slower-than < 0表示所有命令都不记录
慢查询默认保存在服务器状态slowlog链表中,最大长度就是slowlog-max-len是列表的最大长度(默认128条),当慢查询日志列表被填满后,新的慢查询命令则会继续入队,队列中的第一条数据机会出列。
(2)获取慢查询
执行:slowlog get [n] 获取执行条数的慢查询语句。
慢查询组成:
- 慢查询日志的标识id
- 发生时间戳
- 命令耗时(单位微秒)
- 执行命令和参数
- 客户端IP+端口
- 客户端名称
使用注意事项
(1)slowlog-max-len配置建议:
建议调大慢查询列表,记录慢查询时Redis会对长命令做截断操作,并不会占用大量内存。增大慢查询列表可以减缓慢查询被剔除的可能,线上生产建议设置为1000以上。
(2)慢查询是先进先出队列,而且Redis中存储有限,为了防止记录被丢弃,应该将对应记录持久化到其他存储中。