浅谈Redis之慢查询日志

首先我们需要知道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生成的持久型日志,这需要额外去配置一些内容,其中涉及到了集群和分布式,这里先点到为止。

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

原文地址:https://www.cnblogs.com/thomson-fred/p/9810220.html

时间: 2024-09-29 08:35:14

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

redis设置慢查询日志

Redis 的慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过这个功能产生的日志来监视和优化查询速度. 1.redis生命周期 慢查询发生在第3阶段 2.两个配置 2.1.slowlog-max-len    选项指定服务器最多保存多少条慢查询日志. 服务器使用先进先出的方式保存多条慢查询日志: 当服务器储存的慢查询日志数量等于 slowlog-max-len 选项的值时, 服务器在添加一条新的慢查询日志之前, 会先将最旧的一条慢查询日志删除. 2.2 slowlog-log

redis的慢查询日志

慢查询日志 记录最新的N条执行时间超过M毫秒的命令.慢查询日志保存在内存中,而不是文件中,这保证了慢查询日志的效率. 慢查询日志的条目定义 /* This structure defines an entry inside the slow log list */ /* * 慢查询日志 */ typedef struct slowlogEntry { // 命令与命令参数 robj **argv; // 命令与命令参数的数量 int argc; // 唯一标识符 long long id;   

辛星浅谈Redis中的虚拟内存

和大多数NoSQL一样,Redis也是使用的KV的数据存储模型,为了提高读写效率,Redis也是将KV保存在内存中,但是这样做会带来一些问题. 如果 内存足够大,那么把所有的数据都加载到内存中固然是最好的选择,那么查询操作都直接操作内存,自然是很快.但是实际情况中却更多的是只有部分数据才能加载到内存中,那么这个时候就提出来一个虚拟内存的概念. Redis中的虚拟内存和Linux中的虚拟内存不是一回事,但是其思想是一致的,就是把暂时不常用的数据从内存交换到磁盘中,从而可以把宝贵的内存腾出来用于其他

浅谈redis和memcached的区别

缓存技术方面说到redis大家必然会联想到memcached,了解它们的人应该都知道以下几点吧 redis与 memcached相比,redis支持key-value数据类型,同事支持list.set.hash等数据结构的存储. redis支持数据的备份,即master-slave模式的数据备份. redis支持数据的持久化. redis在很多方面支持数据库的特性,可以这样说他就是一个数据库系统,而memcached只是简单地K/V缓存. 它们在性能方面差别不是很大,读取方面尤其是针对批量读取性

浅谈Redis及其安装配置

一.Redis的介绍 二.Redis的安装配置 三.Redis的配置文件说明 四.Redis的简单操作 简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持 数据模型: 作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系.但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一:    L

浅谈 Redis 与 MySQL 的耦合性以及利用管道完成 MySQL 到 Redis 的高效迁移

http://blog.csdn.net/dba_waterbin/article/details/8996872 ㈠ Redis 与 MySQL 的耦合性            在业务架构早期.我们便该"吃着碗里的看着锅里的".切莫让MySQL 有梦.而Redis 无心    毕竟.有些关系型的结构不适合放到Redis跑."男女搭配.干活不累"嘛.推荐让MySQL与Redis喜结连理        其次.这 2 人.一般是在不同场景做选择.而不会在性能上选择. 

浅谈Redis五种数据结构的底层原理

概念 Redis作为一个开源的用C编写的非关系型数据库,基于优秀的CRUD效率,常用于软件系统的缓存,其本身提供了以下五种数据格式: string:字符串 list:列表 hash:散列表 set:无序集合 zset:有序集合 接下来我们就要针对这五种数据结构,来分析其底层的结构 这里选用的版本是redis-5.0.4,所以可能有很多地方和如今网络上的其他博文不太一致,不同的地方我会在文中指出 string 因为redis使用c语言开发,所以自然没有java和c++的那些字符串类库,在redis

浅谈redis

1.Redis简介: Redis是一个开源的使用ANSI C语言编写,遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.它通常被称为数据结构服务器,因为值value可以是字符串String.哈希Mao.列表List.集合Sets和有序集合Sorted sets等类型. 2.Redis的特点: Redis是一款内存高速缓存数据库,典型的NoSQL数据库服务器,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string.

京东云实践:浅谈Redis主从复制

Redis 是一个开源的,遵守BSD许可协议的key/value缓存系统,并由其高效的响应速度以及丰富的数据结构而闻名.Redis在京东的使用也是非常普遍 的,包括很多关键业务上的使用,由于Redis官方集群还未发布,在使用Redis的过程中需要面对Redis的单点 问题,京东采用的是一种比较通用的解决方案即 由主从备份再加相应的主从切换(在一些场景下可能进行读写分离),使主Redis出现失效的时候可以快速的切换到从Redis上.但Redis目前存在的 一个问题是主从复制在遇到网络不稳定的情况下