IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis 的慢查询讲解 -> 正文阅读

[大数据]Redis 的慢查询讲解

许多存储系统(例如MySQL)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息(例如:发生时间、耗时、命令的详细信息)记录下来,Redis也提供了类似的功能。


Redis 命令的执行过程

请添加图片描述

慢查询日志的参数

slowlog-log-slower-than:指定执行时间超过多少微秒(1秒等于1000000微秒) 的命令请求会被记录到日志上。

举个栗子:如果这个选项值为100,那么执行时间超过100微秒的命令就会被记录到慢查询日志;如果这个选项值为500,那么执行时间超过500微秒的命令就会被记录到慢查询日志。


slowlog-max-len:指定服务器最多保存多少条慢查询操作,服务器先进先出的方式保存多条慢查询日志,当服务器存储的慢查询数量等于slowlog-log-len选项值时,服务器在添加一条新的慢查询日志之前,会先将对旧的一条慢日志先删除。

举个栗子:如果服务器 slowlog-log-len 的值为100,并且假设服务器已经存储了100条慢查询日志,那么如果服务器打算添加一条新的慢查询日志的话,他就必须先删除目前保存的最旧的那条日志,然后在添加新日志。

实际现象如下:

先使用config set命令将 slow-log-slower-than 参数的设置为0微秒,这样 redis 服务器执行的任何命令都会记录到慢查询日志中。接着把 slowlog-max-len 参数的值设置的5,让服务器最多只保存5条慢查询记录

127.0.0.1:6379> config set slowlog-log-slower-than 0
OK
127.0.0.1:6379> config set slowlog-max-len 5
OK
127.0.0.1:6379>

下面我们使用redis客户端发送几个请求:

127.0.0.1:6379> set msg "hello world"
OK
127.0.0.1:6379> set number 10086
OK
127.0.0.1:6379> set database "Redis"
OK
127.0.0.1:6379> set sql mysql
OK
127.0.0.1:6379> set nosql memcache
OK
127.0.0.1:6379>

然后使用slowlog get来查看服务器所保存的慢查询日志:

127.0.0.1:6379> slowlog get
1) 	1) (integer) 6			 #日志的唯一标识符
	2) (integer) 1610158493  #命令执行时的Unix时间戳
	3) (integer) 11 		 #命令执行的时长,以微秒计算
	4) 	1) "set" 			 #命令以及命令参数
		2) "nosql"
		3) "memcache"
		5) "127.0.0.1:40024"
		6) ""
2) 	1) (integer) 5
	2) (integer) 1610158478
	3) (integer) 10
	4) 	1) "set"
		2) "sql"
		3) "mysql"
		5) "127.0.0.1:40024"
		6) ""
3) 	1) (integer) 4
	2) (integer) 1610158457
	3) (integer) 9
	4) 	1) "set"
		2) "database"
		3) "Redis"
		5) "127.0.0.1:40024"
		6) ""
4) 	1) (integer) 3
	2) (integer) 1610158437
	3) (integer) 20
	4) 	1) "set"
		2) "number"
		3) "10086"
		5) "127.0.0.1:40024"
		6) ""
5) 	1) (integer) 2
	2) (integer) 1610158422
	3) (integer) 21
	4) 	1) "set"
		2) "msg"
		3) "hello world"
		5) "127.0.0.1:40024"
		6) ""
127.0.0.1:6379>

慢查询日志的保存

服务器状态中包含了几个慢查询日志功能有关的属性:

struct redisServer {

	//...
	//下一个慢查询日志的ID
	long long slowlog_entry_id;
	
	//保存了所有查询日志的链表
	list *slowlog;
	
	//服务器配置slowlog-log-slower-than选项的值
	long long slowlog_log_slower_than;
	
	//服务器配置slowlog-max-len的值
	unsigned long slowlog_max_len;
	
	//...
	
}

slowlog_entry_id 属性的初始值为0,每当创建一天新的慢查询日志时,这个属性值就会作用到新日志的 id 值,之后程序会对这个属性的值增一。请添加图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:50:45  更:2021-09-09 11:52:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:55:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码