Redis慢查询日志学习功能
慢查询日志
Slow log是Redis用来记录查询执行时间超过给定时长的命令请求的日志系统。查询执行时间指的是不包括像客户端响应(talking)、发送回复等IO操作,而单单是执行一个查询命令所耗费的时间。另外,slow log保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启slow log而损害Redis的速度。
服务器配置有两个和慢查询日志相关的选项:
slowlog-log-slower-than:选项指定执行时间超过多少微秒(1秒等于1,000,000微秒)的命令请求会被记录到日志上。举个例子, 如果这个选项的值为100,那么执行时间超过100微秒的命令就会被记录到慢查询日志; 如果这个选项的值为500 , 那么执行时间超过500微秒的命令就会被记录到慢查询日志; 诸如此类。
slowlog-max-len:选项指定服务器最多保存多少条慢查询日志。服务器使用先进先出的方式保存多条慢查询日志: 当服务器储存的慢查询日志数量等于slowlog-max-len选项的值时,服务器在添加一条新的慢查询日志之前,会先将最旧的一条慢查询日志删除。举个例子, 如果服务器slowlog-max-len的值为100,并且假设服务器已经储存了100条慢查询日志, 那么如果服务器打算添加一条新日志的话,它就必须先删除目前保存的最旧的那条日志, 然后再添加新日志。
让我们来看一个慢查询日志功能的例子,首先用CONFIG_SET命令将slowlog-log-slower-than选项的值设为0微秒, 这样Redis服务器执行的任何命令都会被记录到慢查询日志中, 接着将slowlog-max-len选项的值设为5,让服务器最多只保存5条慢查询日志:
redis> CONFIG SET slowlog-log-slower-than 0
OK redis> CONFIG SET slowlog-max-len 5
OK
接着, 我们用客户端发送几条命令请求:
redis> SET msg "hello world"
OK redis> SET number 10086
OK redis> SET database "Redis"
OK
然后使用SLOWLOG GET命令查看服务器所保存的慢查询日志:
redis> SLOWLOG GET
1) 1) (integer) 4 #日志的唯一标识符(uid);
2) (integer) 1378781447 #命令执行时的UNIX时间戳;
3) (integer) 13 #命令执行的时长,以微秒计算;
4) 1) "SET" #命令以及命令参数;
2) "database"
3) "Redis" 2) 1) (integer) 3
2) (integer) 1378781439
3) (integer) 10
4) 1) "SET"
2) "number"
3) "10086" 3) 1) (integer) 2
2) (integer) 1378781436
3) (integer) 18
4) 1) "SET"
2) "msg"
3) "hello world" 4) 1) (integer) 1
2) (integer) 1378781425
3) (integer) 11
4) 1) "CONFIG"
2) "SET"
3) "slowlog-max-len"
4) "5" 5) 1) (integer) 0
2) (integer) 1378781415
3) (integer) 53
4) 1) "CONFIG"
2) "SET"
3) "slowlog-log-slower-than"
4) "0"
如果这时再执行一条SLOWLOG GET 1命令,那么我们将看到, 上一次执行的SLOWLOG GET命令已经被记录到了慢查询日志中, 而最旧的、编号为0的慢查询日志已经被删除, 服务器的慢查询日志数量仍然为5条:
redis> SLOWLOG GET 1
1) 1) (integer) 5
2) (integer) 1378781521
3) (integer) 61
4) 1) "SLOWLOG"
2) "GET"
日志的唯一id只有在Redis服务器重启的时候才会重置,这样可以避免对日志的重复处理(比如你可能会想在每次发现新的慢查询时发邮件通知你)。
使用命令SLOWLOG LEN可以查看当前日志的数量。
请注意这个值和 slower-max-len的区别,它们一个是当前日志的数量,一个是允许记录的最大日志的数量。
redis> SLOWLOG LEN
(integer) 5
使用命令SLOWLOG RESET可以清空slow log 。
redis> SLOWLOG RESET
OK
Redis慢查询日志学习功能的更多相关文章
- redis 慢查询日志
说明:针对慢查询日志,可以设置两个参数,一个是执行时长,单位为微秒,另一个是慢查询日志的长度.如果超过该长度,当一个新的命令被写入日志时,最老的一条会从命令日志队列中被移除. 编辑配置文件redis. ...
- redis慢查询日志
运维需要记录一下主redis中那些“慢操作”的命令,然后找到相关的业务方,不然的话,阻塞 就不好玩了.然后就直接在redis手册中就找到了相关的命令. SLOWLOG subcommand [argu ...
- redis慢查询日志的配置和查看
Redis是单线程运行的,一个慢执行,会让后续的大量执行延时,吞吐量也会极大的降低.记录.查询.监控Redis慢执行意义重大.Redis的slowlog只记录在内存中,效率很高,不用过于担心影响性能. ...
- Redis学习笔记九:独立功能之慢查询日志
Redis 的慢查询日志用于记录执行时间超过给定时长的命令请求,用户可以通过这个功能产生的日志来监视和优化查询速度. 服务器配置有两个相关选项: slowlog-log-slower-than 选项指 ...
- redis 笔记06 发布与订阅、事务、慢查询日志、监视器
发布与订阅 1. 服务器状态在pubsub_channels字典保存了所有频道的订阅关系:SUBSCRIBE命令负责将客户端和被订阅的频道关联到这个字典里面,而UNSUBSCRIBE命令则负责 解除客 ...
- Redis 设计与实现 (八)--排序、慢查询日志、监视器
一.排序 SORT <key> 对一个数字值的key进行排序 1.alpha 对字符串类型的键进行排序 2.asc / desc redis 默认升序排序asc desc 与之相反 3. ...
- 浅谈Redis之慢查询日志
首先我们需要知道redis的慢查询日志有什么用?日常在使用redis的时候为什么要用慢查询日志? 第一个问题: 慢查询日志是为了记录执行时间超过给定时长的redis命令请求 第二个问题: 让使用者更好 ...
- Redis的慢查询日志
编辑配置文件/etc/redis.conf针对慢查询日志,可以设置两个参数,一个是执行时长,单位是毫秒,另一个是慢查询日志的长度.当一个新的命令被写入日志是,最老的一条会从命令日志队列中被移除slow ...
- redis设置慢查询日志
Redis 的慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过这个功能产生的日志来监视和优化查询速度. 1.redis生命周期 慢查询发生在第3阶段 2.两个配置 2.1.slow ...
随机推荐
- 实习培训——Java多线程(9)
实习培训——Java多线程(9) 很适合新手 http://www.cnblogs.com/GarfieldEr007/p/5746362.html http://www.cnblogs.com/Ga ...
- 详解Laravel的目录结构
Models 目录在哪里? 许多初学者可能都会困惑 Laravel 为什么没有提供 models 目录,官方解释说是因为不同人对 models 这个词的含义看法不同,容易造成歧义,有些开发者认为应用的 ...
- 18-Python3 迭代器与生成器
2018-11-22 16:14:01 print('迭代器********************************************************************** ...
- trie字典树
---恢复内容开始--- 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 #include <bits/stdc++.h> usin ...
- heapy() :python自带的堆排序
堆是一个二叉树,其中每个父节点的值都小于或等于其所有子节点的值.整个堆的最小元素总是位于二叉树的根节点.python的heapq模块提供了对堆的支持. 堆数据结构最重要的特征是heap[0]永远是最小 ...
- 5.C#释放非托管资源1
释放非托管资源 在介绍释放非托管资源的时候,我觉得有必要先来认识一下啥叫非托管资源,既然有非托管资源,肯定有托管资源. 托管资源指的是.net可以自棕进行回收的资源,主要是指托管堆上分配的内存资源.托 ...
- winhex模版
模版数据类型: char 字符 字符数组 char[i] binary 显示为二进制 hexadecimal uint32 显示4个字节,按16进制小端显示
- servlet的请求转发与重定向
重定向: Spring的重定向 spring的请求转发:
- Hibernate框架第二天
### Hibernate的持久化类 ### ---------- **什么是持久化类** 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为 ...
- PHP乘法表
<?php //一行*$a="*";echo ("$a <br>"); //一行50个*for($j=1;$j<=50;$j++){ e ...