首先我们需要知道redis的慢查询日志有什么用?日常在使用redis的时候为什么要用慢查询日志?

第一个问题:

慢查询日志是为了记录执行时间超过给定时长的redis命令请求

第二个问题:

让使用者更好地监视和找出在业务中一些慢redis操作,找到更好的优化方法

在Redis中,关于慢查询有两个设置--慢查询最大超时时间慢查询最大日志数

1. 可以通过修改配置文件或者直接在交互模式下输入以下命令来设置慢查询的时间限制,当超过这个时间,查询的记录就会加入到日志文件中。

CONFIG  SET  slowlog-log-slower-than  num

设置超过多少微妙的查询为慢查询,并且将这些慢查询加入到日志文件中,num的单位为毫秒,windows下redis的默认慢查询时10000微妙即10毫秒。

2. 可以通过设置最大数量限制日志中保存的慢查询日志的数量,此设置在交互模式下的命令如下:

CONFIG  SET  slowlog-max-len  num

设置日志的最大数量,num无单位值,windows下redis默认慢查询日志的记录数量为128条。

命令的解析:

CONFIG 命令会使redis客户端自行去寻找redis的.conf 配置文件,找到对应的配置项进行修改。

以上的都是在交互模式下对redis进行配置,跟直接在.conf文件下修改配置行没有什么区别,都是可以实现以上的慢查询日志记录功能的,但是需要注意的是,在客户端的交互模式下输入CONFIG SET命令,只针对当前的会话来执行日志记录的设置,其他的会话(重新启动redis服务端),那么还是老样子,按照redis.conf文件的默认设置来执行?为什么会是这样的?因为redis是基于内存的,当一个退出一个客户端之后,所有的设置都会退回到默认版本。下次想设置慢查询日志配置,还是需要重新键入命令。那么在.conf文件下中修改配置呢?这种办法就相对一劳永逸了,因为每次服务端的启动都是以配置文件为基础的,所以slowlog日志会默认以.conf文件中的设置为标准。

即使这样,当做一些测试的时候,个人比较喜欢直接在交互模式下修改,交互模式下修改可以在当前的状态下和以后开启redis客户端(在服务端还没重启的条件下)都会执行慢查询日志的记录功能。而如果在.conf文件中修改配置项,那么需要重新启动redis服务器,来使这个功能生效,下次需要修改配置,还得到.conf文件来重新配置。

为更完整描述配置文件过程,我这里写一下如何在.conf文件中如何修改配置项

windows操作系统下用记事本,linux操作系统下用sublim text 或者vim打开。找到

对应下面就会找到配置选项了

那么接下来,如何查看慢查询呢?

又是进入交互模式下,命令很简单。

SLOWLOG GET

(当然也可以用小写,redis客户端对大小写没有太严格的限制)

以windows为例查看记录如下

为了方便解说,我设置超时时间为0毫秒,日志记录为1条

那么记录的中的1)2)3)4)分别表示什么呢?

1)表示日志唯一标识符uid

2)命令执行时系统的时间戳

3)命令执行的时长,以微妙来计算

4)命令和命令的参数

做日志查询的时候,可以通过3)来查看是具体的命令运行时间(注意:再强调一次,时间的单位是微妙,但对于一个插入操作来说,10000微妙,也就是10毫秒即0.01秒已经可以算是慢操作了)哪些操作出了问题。当然这只限于测试使用,如果需要当业务出现redis插入查询缓慢的事件,需要去查看redis生成的持久型日志,这需要额外去配置一些内容,其中涉及到了集群和分布式,这里先点到为止。

笔者希望自己往后有更深刻的认识的时候再来写一遍相关的文章。

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

  1. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...

  2. $.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )

    $.ajax()方法详解   jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...

  3. redis设置慢查询日志

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

  4. Redis的慢查询日志

    编辑配置文件/etc/redis.conf针对慢查询日志,可以设置两个参数,一个是执行时长,单位是毫秒,另一个是慢查询日志的长度.当一个新的命令被写入日志是,最老的一条会从命令日志队列中被移除slow ...

  5. 浅谈Redis的基本原理和数据类型结构的特性和应用开发场景

    一.Redis介绍 1,redis介绍(Redis安装在磁盘:Redis数据存储在内存) redis是一种基于键值对(key-value)数据库,其中value可以为string.hash.list. ...

  6. 浅谈redis和memcached的区别

    缓存技术方面说到redis大家必然会联想到memcached,了解它们的人应该都知道以下几点吧 redis与 memcached相比,redis支持key-value数据类型,同事支持list.set ...

  7. 浅谈Redis及其安装配置

    一.Redis的介绍 二.Redis的安装配置 三.Redis的配置文件说明 四.Redis的简单操作 简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型. ...

  8. 浅谈redis的HyperLogLog与布隆过滤器

    首先,HyperLogLog与布隆过滤器都是针对大数据统计存储应用场景下的知名算法. HyperLogLog是在大数据的情况下关于数据基数的空间复杂度优化实现,布隆过滤器是在大数据情况下关于检索一个元 ...

  9. 听雷哥浅谈Redis

    Linux下安装redis 1.下载源码,解压缩后编译源码. $ wget http://download.redis.io/releases/redis-2.8.3.tar.gz $ tar xzf ...

随机推荐

  1. ASP.NET MVC 异常Exception拦截

    一.前言 由于客户端的环境不一致,有可能会造成我们预计不到的异常错误,所以在项目中,友好的异常信息提示,是非常重要的.在asp.net mvc中实现异常属性拦截也非常简单,只需要继承另一个类(Syst ...

  2. mysql 开发进阶篇系列 26 数据库RPM安装演示

    一.概述 上一章讲到了RPM安装后的文件目录,这章还是介绍下安装步骤.也便以后做参考吧. 1. 移出centos 7系统自带的mysql库 yum remove mysql-libs 2. 将下载的m ...

  3. go 通过http发送图片file内容

    package main import ( "encoding/json" "fmt" "io/ioutil" "net/http ...

  4. Python爬取网易云歌单

    目录 1. 关键点 2. 效果图 3. 源代码 1. 关键点 使用单线程爬取,未登录,爬取网易云歌单主要有三个关键点: url为https://music.163.com/discover/playl ...

  5. Zuul过滤器

    1.Zuul过滤器生命周期Zuul大部分功能都是通过过滤器来实现的,Zuul定义了4种标准的过滤器类型,这些过滤器类型对应于请求的典型生命周期.a.pre: 这种过滤器在请求被路由之前调用.可利用这种 ...

  6. PHP多个进程同时写入同一个文件

    flock (PHP 3 >= 3.0.7, PHP 4, PHP 5) flock -- 轻便的咨询文件锁定 说明 bool flock ( int handle, int operation ...

  7. Python JSON 基本使用

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成, ...

  8. 安装Eclipse时遇到”java was started but returned exit code = 13“如何解决?

    有的时候运行开发工具时会出现java was started but returned exit code = 13......的提示,绝大多数的问题都是版本问题: 我们可以打开命令行工具cmd 输入 ...

  9. HTML 中获取现在时间,实时时间获取

    JavaScript   Date 对象 Date 对象用于处理日期与实际. 创建 Date 对象: var now  =  new Date(). 方法 描述 getDate() 从 Date 对象 ...

  10. ASP.NET Identity 一 (转载)

    来源:http://www.cnblogs.com/r01cn/p/5194257.html 注:本文是[ASP.NET Identity系列教程]的第一篇.本系列教程详细.完整.深入地介绍了微软的A ...