作者简介:
🌹 作者:暗夜91
🤟 个人主页:暗夜91的主页
📝 如果感觉文章写的还有点帮助,请帮忙点个关注,谢谢。
Redis慢查询分析
一、简介
同许多数据库一样,Redis也提供了慢查询日志用来帮助使用人员定位系统存在的慢查询。慢查询日志就是系统在命令执行前后每条命令的执行时间,当超过预设的阈值的时候,就会将这条命令执行的相关信息(例如:发生时间、耗时、命令的详细信息)记录下来。
Redis客户端执行一条命令分成4步:
- 1)发送命令
- 2)命令排队
- 3)命令执行
- 4)返回结果
如下图所示:
注意:
慢查询只会统计步骤3)的时间,所以即便没有慢查询,也不代表客户端不会存在超时问题。
二、慢查询配置
1、配置
Redis实现慢查询操作需要配置的属性有两个:
- slowlog-log-slower-than :预设阈值,单位是微秒(1秒 = 1000毫秒 = 1000000微秒),默认值为10000,如果超过阈值,就将被记录在慢查询日志中。
- slowlog-max-len :慢查询日志中最多存储多少条,实际上Redistribution中存储慢查询日志是使用的列表类型,该属性就是list的最大长度。当慢查询日志列表超过最大值时,最早插入的命令将会被移除。
提示:
如果slow-log-slower-than=0会记录所有的命令,slowlog-log-slower-than<0时,任何命令都不会被记录
Redis中有两种修改配置的方式,一种是修改配置文件,一种是通过 config set命令动态修改。
注意:
通过命令进行的配置无法直接写入到redis的配置文件中,如果需要把配置持久化到本地的配置文件中需要执行 config rewrite 命令
2、命令
(1)获取慢查询日志
slowlog get [n]
如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kUZqJYVi-1651148863578)(imgs/image-20220428201643743-16511482059591.png)]
可以看到慢查询有6个属性,分别是慢查询的标识id,发生时间戳、耗时、执行命令和参数、客户端信息。
(2)获取慢查询日志列表的长度
slowlog len
例如,当前Redis中有25条慢查询
(3)慢查询日志重置
slowlog reset
该命令实际上是对日志列表进行了清理操作。
End