志不强者智不达,言不信者行不果。这篇文章主要讲述Redis 慢查询相关的知识,希望能为你提供帮助。
@[TOC]
Redis 慢查询
配置与命令
Redis的慢速查询日志用于记录超过指定时间的命令。
slowlog-log-slower-than 10000
slowlog-max-len 128
Slowlog-log-slow-than表示超过了多少微秒。
Slowlog-max-len是一个先进先出的链表,可以保存多少慢日志。
slowlogget命令可以用来检查服务器保存的慢速查询日志。
slowloglen命令可以检查日志数量。
slowlogreset可以清除所有的慢速查询日志。
数据结构
redisServer的slowlog链表保存了服务器中所有的慢查询日志,链表的节点是slowlogEntry结构。
/* This structure defines an entry inside the slow log list */
typedef struct slowlogEntry
robj **argv;
int argc;
long long id;
/* Unique entry identifier. */
long long duration;
/* Time spent by the query, in nanoseconds. */
time_t time;
/* Unix time at which the query was executed. */
slowlogEntry;
采用头插法插入新的日志,新的日志在表头,旧的在表尾
如何添加慢速日志:
/* Push a new entry into the slow log.
* This function will make sure to trim the slow log accordingly to the
* configured max length. */
void slowlogPushEntryIfNeeded(robj **argv, int argc, long long duration)
if (server.slowlog_log_slower_than <
0) return;
/* Slowlog disabled */
if (duration >
= server.slowlog_log_slower_than)
listAddNodeHead(server.slowlog,slowlogCreateEntry(argv,argc,duration));
/* Remove old entries if needed. */
while (listLength(server.slowlog) >
server.slowlog_max_len)
listDelNode(server.slowlog,listLast(server.slowlog));
总结
这篇文章是对redis慢日志的分析,让我们来总结一下,慢查询日志针对出现查询比较慢的命令进行记录保存,保存是保存在一个链表中,先进先出,新的日志在链表的表头插入,通过slowlogget命令可以检查服务器保存的慢速查询日志,通过slowloglen命令可以检查日志数量,而slowlogreset清除所有的慢速查询日志,另外对于慢日志的定义,我们可以通过slowlog-log-slow-than参数和slowlog-max-len来表示。redis的慢查询的记录能够让我们在生产中迅速定位是哪条命令导致的redis服务的响应不及时,从而能很好的定位问题,解决问题。
【Redis 慢查询】redis除了慢查询还有其他的功能点让我们一起学习和进步,期待我的下一篇文章吧,今天的文章先写到这里,希望能给你带来收获。
推荐阅读
- 1┃音视频直播系统之浏览器中通过WebRTC访问摄像头
- 全连接网络基础1——MNIST数据集
- 简单的网络协议概述
- 使用easyPOI时碰到的几个问题(记录一下)
- IntelliJIDEA的常用设置的最详细图解说明(图文并茂)
- 小白一看就会的Spring的RestTemplate的使用
- Java基础之Optional类(JDK1.8新特性)
- 使用Python监控邮件服务器公网IP是否被列入黑名单并及时告警
- Powershell实现多硬盘的电脑使用SCCM安装系统选择目的盘清单