Redis 慢查询日志

Redis慢查询日志概述

Redis慢查询日志是一个记录超过指定执行时间的查询的系统。 这里的执行时间不包括IO操作,比如与客户端通信,发送回复等等,而只是实际执行命令所需的时间(这是唯一在命令执行过程中线程被阻塞且不能同时处理其他请求的阶段)。

Redis 执行生命周期

在这里插入图片描述
我们的 慢查询 是在第三个步骤,慢查询是记录执行命令的时间。客户发送命令,排队这些都不含在慢查询的时间内,仅仅只记录执行命令耗费的时间。有时候我们分析客户端超时的时候,不一定是慢查询,有可能第一个阶段和第四个阶段出现超时,但是有慢查询是客户端超时的其中一个原因。

慢查询的配置参数

  1. slowlog-max-len
  2. slowlog-log-slower-than

slowlog-max-len

slowlog-max-len 是慢查询日志的长度。实际上,Redis使用了一个列表来存储慢查询日志。Redis 使用了一个List 实现了一个先进先出的队列。当 第三阶段 执行的命令符合慢查询设置的时间,那么这个命令就会被插入到这个队列当中。这个 List 是一个固定的长度,其次是保存在内存当中。

slowlog-log-slower-than

slowlog-log-slower-than就是那个预设阈值,它的单位是微秒(1秒=1000毫秒=1000000微秒),默认值10000。slowlog-log-slower-than 告诉Redis命令的执行时间超过多少微秒将会被记录。 请注意,使用负数将会关闭慢查询日志,而值为0将强制记录每一个命令。
也就是 slowlog-log-slower-than=0,那么系统会记录所有的命令;如果slowlog-log-slower-than<0,那么对任何命令都不会记录。

查看当前系统此参数的配置

127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "128"
127.0.0.1:6379> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "10000"
127.0.0.1:6379> 

由此可知:系统默认 slowlog-max-len 的长度是 128,slowlog-log-slower-than 阈值是:10000 微秒。相当于 10 毫秒。

配置方法

修改配置文件重启(不推荐)

因为 慢查询 是基于内存的,一旦重启后,里面的数据将会丢失。除非刚刚开始安装的时候就在配置文件中配置好。
找到我们的 Redis 配置文件: redis.conf,打开该文件,修改他们的值后,然后重启。

slowlog-log-slower-than 10000
slowlog-max-len 128

动态配置(推荐)

config set slowlog-max-len 500
config set slowlog-log-slower-than 5000

127.0.0.1:6379> config set slowlog-max-len 500
OK
127.0.0.1:6379> config set slowlog-log-slower-than 5000
OK
127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "500"
127.0.0.1:6379> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "5000"

慢查询的命令

读取慢查询日志

请使用SLOWLOG GET命令,此命令返回慢查询日志中的每一个条目。 可以只返回最近的N个条目,通过给命令传入一个额外的参数(例如:SLOWLOG GET 10)。

redis 127.0.0.1:6379> slowlog get 2
1) 1) (integer) 14
   2) (integer) 1309448221
   3) (integer) 15
   4) 1) "ping"
2) 1) (integer) 13
   2) (integer) 1309448128
   3) (integer) 30
   4) 1) "slowlog"
      2) "get"
      3) "100"

每一个条目由四个字段组成:

1:每个慢查询条目的唯一的递增标识符。
2:处理记录命令的unix时间戳。
3:命令执行所需的总时间,以微秒为单位。
4:组成该命令的参数的数组。

条目的唯一ID可以用于避免慢查询条目被多次处理(例如,你也许有一个脚本使用每个新的慢查询日志条目给你发送报警邮件)。

条目ID在Redis服务器运行期间绝不会被重置,仅在Redis服务重启才重置它。

获取慢查询日志的当前长度

使用命令SLOWLOG LEN可以获得慢查询日志的长度。

127.0.0.1:6379> slowlog len
(integer) 0

重置慢查询日志

你可以使用命令SLOWLOG RESET来重置慢查询日志。

删除后,信息将永远丢失。

127.0.0.1:6379> slowlog reset
OK

慢查询 推荐 参数设置

  1. slowlog-max-len 默认是128,不要设置过小,通常设置 1000。
  2. slowlog-log-slower-than 默认是10毫秒, 我们知道redis 是基于内存的,内存的速度特别快,因此这里推荐设置1毫秒。
  3. 定期做 慢查询 的持久化。我们知道 慢查询是先进先出的,因此当数量到达一定的长度,会有一些慢查询会丢失。因此定期 将慢查询 持久化到 数据库,方便我们日后分析。

之前准备学习的时候写博客,可是都没有坚持下去,希望这次可以有始有终。
Redis 坚持第一天 :为什么要使用 redis ?
Redis 坚持第二天 :Redis 的安装与启动
Redis 坚持第三天 :Redis 使用配置文件启动,常见配置学习。
Redis 坚持第四天 :

  1. Redis 五种常见的数据结构:String
  2. Redis 五种常见的数据结构:Hash
  3. Redis 五种常见的数据结构:List
  4. Redis 五种常见的数据结构:Set
  5. Redis 五种常见的数据结构:zset

Redis 坚持第五天 :Redis 客户端:Jredis 和 spring-data-redis 整合。
Redis 坚持第六天 :Redis 慢查询日志。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java小小星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值