有的时候,因为程序或者其他原因,需要知道哪些key 或者操作导致redis 慢查询。提供给开发者找出执行时间较长的 Redis 命令,并优化这些命令以提高 Redis 的性能。 以下是获取 Redis 慢查询的步骤:
- 打开 Redis 配置文件 redis.conf,找到 slowlog 相关配置项,确保 slowlog 配置项被设置为开启状态。例如:
slowlog-log-slower-than 10000 slowlog-max-len 128
上述配置中,slowlog-log-slower-than 表示超过 10000 微秒的命令将被记录到慢查询日志中,slowlog-max-len 表示慢查询日志的最大长度为 128。
使用 Redis 命令行工具连接到 Redis 服务器,执行命令 CONFIG GET slowlog-max-len,确保 slowlog-max-len 配置项的值正确。
使用 Redis 命令行工具执行一些 Redis 命令,例如 SET、GET、HGET、HSET 等,确保这些命令至少有一些执行时间超过 slowlog-log-slower-than 配置项所设定的阈值。
获取慢查询日志。使用 Redis 命令行工具执行命令 SLOWLOG GET [n],其中 n 表示获取最近 n 条慢查询日志。例如,执行命令 SLOWLOG GET 10 将获取最近的 10 条慢查询日志。每条慢查询日志包含三个字段:时间戳、执行时间以微秒为单位、命令本身。可以根据这些信息来优化执行时间较长的 Redis 命令。
可以使用 Redis GUI 工具或者编写脚本来更方便地获取和分析慢查询日志。
需要注意的是,开启慢查询日志会增加 Redis 的性能开销,因此在生产环境中应该谨慎使用,并根据实际情况进行调整。
SLOWLOG GET 10
结果为查询ID、发生时间、运行时长和原命令 默认10毫秒,默认只保留最后的128条。单线程的模型下,一个请求占掉10毫秒是件大事情,注意设置和显示的单位为微秒,注意这个时间是不包含网络延迟的。
获取慢查询日志
slowlog get
获取慢查询日志条数
slowlog len
清空慢查询
slowlog reset