文章目录

  • 1.慢查询日志概述
  • 2.慢查询的两个配置参数
  • 2.读取慢查询日志、获取慢日志列表长度、慢查询日志重置
  • 获取慢查询日志
  • 获取慢查询日志列表当前的长度
  • 慢查询日志重置
  • 3.慢日志输出格式
  • 4.慢日志查询建议
  • 5.监视器
  • 监视器原理
  • 监视器缺点(执行 MONITOR 也会导致 Redis OOM?)


1.慢查询日志概述

1.介绍:
Redis的慢查询日志负责记录超过指定执行时间的查询操作。这个执行时间并不包括I/O操作(例如,服务端和客户端之间的通信、发送应答消息,等等),它仅仅是执行命令实际需要消耗的时间(只有在命令执行的阶段,Redis才会阻塞线程,此时就不能处理其他请求了)。
2.命令执行过程
1)客户端发送命令
2)redis服务端收到命令,将命令排队
3)排队中的命令进行执行,慢查询只统计步骤3)的时间,所以没有慢查询并不代表客户端没有超时问题
4)返回结果

redis怎么实时查看日志文件 redis查看执行记录_慢查询

2.慢查询的两个配置参数

1.慢查询日志具有两个配置参数:
1)slowlog-log-slower-than参数用于指定执行时间的上限值(以微秒为单位),Redis会记录执行时间超过这个上限值的查询操作。注意:若将这个参数设为负数,则会禁用慢查询日志;若将这个参数设为零,则会强制记录每条命令。
2)slowlog-max-len参数用于指定慢查询日志的最大长度。这个参数的最小值为零。当Redis将一条新命令记录入慢查询日志时,如果慢查询日志已经达到最大长度,那么Redis会从日志队列中移除最老的命令日志,这样便能为新的命令日志腾出空间。

2.可以在redis.conf文件中配置上述两个参数,也可以在Redis运行时使用CONFIG GET和CONFIG SET命令进行配置,然后用config rewrite将配置持久化到本地配置文件

举例:
config set slowlog-log-slower-than 20000  #这里单位是微秒,也就是20ms
config set slowlog-max-len 1000
config rewrite

2.读取慢查询日志、获取慢日志列表长度、慢查询日志重置

获取慢查询日志

slowlog get [n]

redis怎么实时查看日志文件 redis查看执行记录_数据库_02

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

redis怎么实时查看日志文件 redis查看执行记录_数据库_03

慢查询日志重置

你可以使用SLOWLOG RESET命令重置慢查询日志。一旦删除,先前记录的慢查询日志就会永久丢失。

redis怎么实时查看日志文件 redis查看执行记录_redis_04

3.慢日志输出格式

慢查询日志的输出格式如下图所示:

redis怎么实时查看日志文件 redis查看执行记录_redis怎么实时查看日志文件_05


redis怎么实时查看日志文件 redis查看执行记录_redis_06


redis怎么实时查看日志文件 redis查看执行记录_redis_07


日志条目的唯一标识符可用于避免多次重复处理相同的慢查询日志条目(例如,你可能会使用一个脚本,每当产生新的慢查询日志条目时,就会给你发送一封报警邮件)。(在Redis服务器的运行期间,这个标识符永远不会被重置,只有当服务器重新启动时才会被重置。)

4.慢日志查询建议

redis怎么实时查看日志文件 redis查看执行记录_redis怎么实时查看日志文件_08


redis怎么实时查看日志文件 redis查看执行记录_慢查询_09

补充:
1.redis慢查询因为命令排队机制,会导致其他命令级联阻塞,因此当客户端请求超时,需要检查时间点是否有对应的慢查询

5.监视器

监视器原理

通过执行MONITOR命令,客户端可以将自己变为一个监视器(服务器维护一个监视器链表,每次收到客户端命令就向监视器发送命令信息),实时地接收并打印出服务器当前处理的命令请求的相关信息:

redis怎么实时查看日志文件 redis查看执行记录_redis怎么实时查看日志文件_10


redis怎么实时查看日志文件 redis查看执行记录_redis_11

监视器缺点(执行 MONITOR 也会导致 Redis OOM?)

redis怎么实时查看日志文件 redis查看执行记录_慢查询_12