Redis slowlog 是个什么

redis的slow log记录了那些执行时间超过规定时长的请求。执行时间不包括I/O操作(比如与客户端进行网络通信等),只是命令的实际执行时间(期间线程会被阻塞,无法服务于其它请求)。

有两个参数用于配置slow log:

slowlog-log-slower-than:设定执行时间,单位是毫秒,执行时长超过该时间的命令将会被记入log。-1表示不记录slow log; 0强制记录所有命令。

slowlog-max-len:            slow log的长度。最小值为0。如果日志队列已超出最大长度,则最早的记录会被从队列中清除。

可以通过编辑redis.conf文件配置以上两个参数。对运行中的redis, 可以通过config get, config set命令动态改变上述两个参数

使用这个命令可以读取或重置 Redis 慢速查询日志。通俗讲就是 redis 可以把执行时间超过我们设定值的命令记录下来,slowlog 是记录到内存中的哦,所以非常快。

设置 Redis slowlog

两种方式:

  1. 可以通过配置 redis.conf 来完成。
  2. 运行时,使用 CONFIG GET 和 CONFIG SET 命令配置。

这里我们主要说的是第二种方式,您可以使用两个参数来配置慢日志:slowlog-log-slow-than * ,告诉 Redis, 记录超过 * 微秒 内的命令执行情况。

需要注意的是,设置负数表示禁用 slowlog ,而设置 0 则强制记录每个命令的执行情况。
以下是 slowlog 的设置使用说明:

redis 127.0.0.1:6379>config set slowlog-log-slower-than 10000
"OK" redis 127.0.0.1:6379>config get slowlog-log-slower-than
1)  "slowlog-log-slower-than"
2)  "10000"

那么问题又来了,slowlog 是记录再内存中的,如果记录所有的命令 log 会不会把内容撑爆呢?

答案是当然不会。slowlog 记录的 log 数是有最大长度限制的,我们可以通过 slowlog-max-len 来查询 slowlog 的最大长度。最小值为零。当一个新的命令被记录下来,并且如果已经达到它的最大长度时,最老的一个 log 将从队列中删除,FIFO 。

另外,使用 slowlog len 命令可以查看当前已记录的数量。 
使用 slowlog reset 重置已记录的 slowlog 信息。

如何阅读 slowlog

我们已经了解 slowlog 是记录在内存中的,所以您可以启用所有命令的日志记录即 slowlog-log-slow-than 配置参数设置为 0 便于监测性能。

要读取 slowlog,使用 SLOWLOG GET 获取命令,它返回慢日志中的每一个条目。可以只返回N个最近的条目,将一个附加参数传递给命令(例如 SLOWLOG GET 2)。

redis 127.0.0.1:6379> slowlog get 2
    1) 1) (integer) 14             //slowlog 唯一标识
       2) (integer) 1309448221     //unix 时间戳
       3) (integer) 15             //命令执行的时间,单位:微秒
       4) 1) "ping"                //具体执行的命令,最多记录128
    2) 1) (integer) 13
       2) (integer) 1309448128
       3) (integer) 30
       4) 1) "slowlog"
          2) "get"
          3) "100" //其中 Redis 4.0 及以上版本还包含以下两部分:        5) "127.0.0.1:58217"         //客户端IP:Port
       6) "worker-123"              //客户端名称

最后,需要注意此命令需要 2.2.12及以上版本的 redis 才能支持。

由于慢查询日志是一个先进先出的队列,也就是说如果慢查询比较多的情况下,可能会丢失部分慢查询命令,为了防止这种情况发生,可以定期执行slowlog get命令将慢查询日志持久化到其他存储中(例如:MySQLElasticSearch等),然后可以通过可视化工具进行查询

查看当前日志的数量:

redis 127.0.0.1:6379> SLOWLOG LEN
(integer) 14

使用命令 SLOWLOG RESET 可以清空 slow log 。

redis 127.0.0.1:6379> SLOWLOG LEN
(integer) 14 redis 127.0.0.1:6379> SLOWLOG RESET
OK redis 127.0.0.1:6379> SLOWLOG LEN
(integer) 0

Redis慢日志查询的更多相关文章

  1. redis 慢日志查询

    Intro 可能有一些命令需要很长时间才能在redis服务器上处理,导致请求超时. 长时间运行的命令的很少例子有 mget有大量的键,键*或写得不好的lua脚本. 可以运行通过 SlowLog 命令查 ...

  2. 浅谈Redis之慢查询日志

    首先我们需要知道redis的慢查询日志有什么用?日常在使用redis的时候为什么要用慢查询日志? 第一个问题: 慢查询日志是为了记录执行时间超过给定时长的redis命令请求 第二个问题: 让使用者更好 ...

  3. redis设置慢查询日志

    Redis 的慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过这个功能产生的日志来监视和优化查询速度. 1.redis生命周期 慢查询发生在第3阶段 2.两个配置 2.1.slow ...

  4. log4net.redis+logstash+kibana+elasticsearch+redis 实现日志系统

    前端时间写了个随笔 log4net.NoSql +ElasticSearch 实现日志记录 ,因项目原因需要把日志根java平台的同事集成采用logstash+kibana+elasticsearch ...

  5. 查看 redis 请求日志

    转: 查看 redis 请求日志 2019-05-29 15:34:41 打卤 阅读数 1980更多 分类专栏: other   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转 ...

  6. Tapdata Cloud 2.1.5来啦:新增支持Amazon RDS数据库,错误日志查询更便捷,Agent部署细节再优化

      需求持续更新,优化一刻不停--Tapdata Cloud 2.1.5 来啦!   最新发布的版本中,数据连接再上新,同时新增任务报错相关信息快速查询入口,开始支持 JVM 参数自定义设置.   更 ...

  7. ELK_elk+redis 搭建日志分析平台

    这个是最新的elk+redis搭建日志分析平台,今年时间是2015年9月11日. Elk分别为 elasticsearch,logstash, kibana 官网为:https://www.elast ...

  8. linux下利用elk+redis 搭建日志分析平台教程

    linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm   elk 日志分析+redis数据库可以创建一个不错的日志分析平台了 ...

  9. Mysql慢日志查询

    MYSQL慢查询配置: 查看是否启用慢日志查询: show VARIABLES like '%quer%'; 没有配置的情况下慢查询是关闭的:

随机推荐

  1. npm 更换阿里淘宝源

    执行命令 npm config set registry https://registry.npm.taobao.org/ 查看是否已经更换成功 npm config get registry

  2. win2008r2 32位odbc安装笔记

    这ORACLE也太难用了,想简单点了事只用个ODBC CLIENT都是件麻烦事,总结了一下,安装流程如下: 1.去官网或其它地方下载: 64位: instantclient-basic-windows ...

  3. PHP三种输出的不同类型

    var_dump() 能打印出类型print_r() 只能打出值echo() 是正常输出... 需要精确调试的时候用 var_dump();一般查看的时候用 print_r()另外 , echo不能显 ...

  4. PAT甲级1010踩坑记录(二分查找)——10测试点未过待更新

    题目分析: 首先这题有很多的坑点,我在写完之后依旧还有第10个测试点没有通过,而且代码写的不优美比较冗长勿喷,本篇博客用于记录写这道题的一些注意点 1.关于两个不同进制的数比大小一般采用将两个数都转化 ...

  5. [USACO15DEC]最大流Max Flow(树上差分)

    题目描述: Farmer John has installed a new system of N−1N-1N−1 pipes to transport milk between the NNN st ...

  6. Touch事件 移动端touch触摸事件

    <!-- HTML5 --> <!DOCTYPE html> <html> <head> <title>TouchEvent测试</t ...

  7. [CSS] prefers-reduced-motion

    The prefers-reduced-motion CSS media feature is used to detect if the user has requested that the sy ...

  8. learning java 使用WatchService监控文件变化

    import java.io.IOException; import java.nio.file.*; public class WatchServiceTest { public static vo ...

  9. web 介绍

    Web介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) web标准:制作网页遵循的规范 web准备规范的分类:结构标准.表现标准.行为标准. 结构:html.表示:css.行为:Jav ...

  10. terraform v0.12.0 发布了

    v0.12.0 相比以前的有好多新的特性,包括语法,以及函数增强,昨天还在折腾的一个json解码的问题,直接使用 v0.12.0 就可以解决了,同时也包含了for 操作处理同时官方文档对于v0.12. ...