面试突击 004 | 如何排查 Redis 中的慢查询?视频实战篇

这是我的第 34 篇原创文章

作者 | 老王(javacn666)

1 面试题

如何排查 Redis 中的慢查询?

2 涉及相关问题

  1. Redis 中有没有慢查询排查工具或者相关排查手段?

  2. 慢查询日志都包含哪些信息?

  3. 慢查询的相关配置项有哪些?默认值是啥?应该如何设置?

  4. 如果慢查询的队列满了?会怎样?

  5. 在代码中如何实现 Redis 的慢查询?

3 答案

首先来说 Redis 中有慢查询日志,是可以实现 Redis 慢操作排查的。

慢日志包含的内容有:

  • 慢查询的具体执行命令;

  • 慢查询的执行时间;

  • 慢查询的执行时长。

慢查询日志内容如下:

127.0.0.1:6379> slowlog get #慢日志查询
1) 1) (integer) 2 #慢日志下标2) (integer) 1581994139 #执行时间3) (integer) 5 #花费时间 (单位微秒)4) 1) "set" #执行的具体命令2) "lang"3) "java"5) "127.0.0.1:47068"6) ""
2) 1) (integer) 12) (integer) 15819941313) (integer) 64) 1) "set"2) "msg"3) "xiaoming"5) "127.0.0.1:47068"6) ""
3) 1) (integer) 02) (integer) 15819940933) (integer) 54) 1) "config"2) "set"3) "slowlog-log-slower-than"4) "0"5) "127.0.0.1:47068"6) ""

慢日志模拟添加,详见视频

慢日志查询相关的配置信息有两个:

  • slowlog-log-slower-than :用于设置慢查询的评定时间,也就是说超过此配置项的命令,将会被当成慢操作记录在慢查询日志中,它执行单位是微秒 (1 秒等于 1000000 微秒);

  • slowlog-max-len :用来配置慢查询日志的最大记录数。

默认值如下:

127.0.0.1:6379> config get slowlog-log-slower-than #慢查询判断时间
1) "slowlog-log-slower-than"
2) "10000"
127.0.0.1:6379> config get slowlog-max-len #慢查询最大记录条数
1) "slowlog-max-len"
2) "128"

可以看出慢查询的临界值是 10000 微秒,默认保存 128 条慢查询记录。

4 代码实战

本文我们使用 Java 来实现慢查询日志的操作,代码如下:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.util.Slowlog;
import utils.JedisUtils;
import java.util.List;
/*** 慢查询*/
public class SlowExample {public static void main(String[] args) {Jedis jedis = JedisUtils.getJedis();// 插入慢查询(因为 slowlog-log-slower-than 设置为 0,所有命令都符合慢操作)jedis.set("db", "java");jedis.set("lang", "java");// 慢查询记录的条数long logLen = jedis.slowlogLen();// 所有慢查询List<Slowlog> list = jedis.slowlogGet();// 循环打印for (Slowlog item : list) {System.out.println("慢查询命令:"+ item.getArgs()+" 执行了:"+item.getExecutionTime()+" 微秒");}// 清空慢查询日志jedis.slowlogReset();}
}

以上代码执行结果如下:

慢查询命令:[SLOWLOG, len] 执行了:1 微秒

慢查询命令:[SET, lang, java] 执行了:2 微秒

慢查询命令:[SET, db, java] 执行了:4 微秒

慢查询命令:[SLOWLOG, reset] 执行了:155 微秒

5 视频

视频内容如下:

6 小结

本文我们介绍了慢查询相关的两个重要参数 slowlog-log-slower-than (用于设置慢查询的评定时间) 和 slowlog-max-len 用来配置慢查询日志的最大记录数,然后通过修改 config set slowlog-log-slower-than 0 把所有操作都记录在慢日志进行相关测试。我们可以使用 slowlog get [n] 查询慢操作日志,使用 slowlog reset 清空慢查询日志。最后给大家一个建议,可以定期检查慢查询日志,及时发现和改进 Redis 运行中不合理的操作。

更多内容,详见视频部分

【END】

近期热文

 
  • 面试突击 003 | Redis 如何实现查询附近的人?视频实战版

  • 面试突击 002 | Redis 是如何处理已过期元素的?附视频

  • 面试突击 001 | Redis 如何从海量数据中查询出某一个 Key?视频版

  • Java面试详解(2020版):500+ 面试题和核心知识点详解

  • 面试珍藏:最常见的200多道Java面试题(2019年最新版)

关注下方二维码,订阅更多精彩内容

朕已阅 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]Android 之 Window、WindowManager 与窗口管理

这篇是对前两天研究的悬浮窗的内容的一个小小的资料整理吧。首先是转载一篇介绍Android窗口的内容&#xff0c;觉得写得不错&#xff1a;http://blog.csdn.net/xieqibao/article/details/6567814 为防止丢失还是把内容也拷一遍吧(*^__^*) 嘻嘻…… 其实在android中真正展示给用…

面试突击 005 | Redis 是如何实现高可用的?它的实现方式有哪些?「视频版」

这是我的第 35 篇原创文章作者 | 老王&#xff08;javacn666&#xff09;这部视频的录制、剪辑、做 PPT、写文稿大约花费了 5 个小时的时间&#xff0c;希望这种形式能被更多的人喜欢&#xff0c;希望这篇文章会给你带来更多的价值。1 面试题 Redis 是如何实现高可用的&#xf…

Linux debian安装和使用Navicat16 for MySQL

Navicat是一套快速、可靠并价格相当便宜的数据库管理工具&#xff0c;专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的&#xff0c;让你可以以安全并且简单的方式创建、组织、访问并…

windosw7 Hosts文件的位置

2019独角兽企业重金招聘Python工程师标准>>> 1.Hosts文件的位置 &#xff1a; C:\Windows\System32\drivers\etc\Hosts 一般个人电脑都在这位置&#xff0c; 例如&#xff1a;118.144.78.38 www.51cto.com ip 域名 # Copyright…

Redis都不懂?就别去面试了!聊聊我的Redis新专栏「视频版」

前不久&#xff0c;有一个读者在后台留言&#xff0c;说他面试 Java 开发工程师岗位时&#xff0c;居然大部分的面试问题都是关于 Redis &#xff0c;他都差点都忘记了自己应聘的是 Java 工程师了。而然这种现象在现在的后端面试中很常见&#xff0c;对 Redis 的掌握已经变成了…

Linux Debian Python弹出信息框、警告框和询问框

利用PyCharm开发平台和Python编程语言开发PyQt5界面程序&#xff0c;有时需要弹出信息框、警告框和咨询框&#xff0c;使用win32api和win32con在windows系统可以&#xff0c;但是在Linux系统不可以。为了解决这个问题&#xff0c;可以使用QMessageBox。 # pip install pywin32…

面试突击 | Redis 如何从海量数据中查询出某一个 Key?附视频

1 考察知识点 本题考察的知识点有以下几个&#xff1a; Keys 和 Scan 的区别Keys 查询的缺点Scan 如何使用&#xff1f;Scan 查询的特点 2 解答思路 Keys 查询存在的问题Scan 的使用Scan 的特点 3 Keys 使用相关 1&#xff09;Keys 用法如下 2&#xff09;Keys 存在的问题…

分享两个好用的nosql GUI工具

redis: 真是千呼万唤始出来&#xff0c;终于有了redis gui 谢谢作者&#xff0c;但中文乱码问题貌似还没有解决呀&#xff01; https://github.com/caoxinyu/RedisClient mongoDB: MongoVUE这个还是很完善的 http://www.mongovue.com/ 转载于:https://www.cnblogs.com/tankaixi…

Linux Debian11安装MySQL8详细教程

一、下载MySQL Community Server Debian11使用了MariaDB 在APT的软件包存储库中并没有mysql,在这里下载MySQL Community Server 然后选择Debian时会出现建议使用 Mysql APT Repository。所以我们下载安装 Mysql APT Repository 的方式更新 APT Repository 之后使用 dpkg -i安…

HashMap 为什么会导致 CPU 100%?文章看不懂?来看这个视频吧!——面试突击 006 期...

无论是在实际工作中还是在面试中&#xff0c;HashMap 无疑是使用频率最高的知识点之一&#xff0c;所以我们需要搞懂每一个关于 HashMap 的知识点才行。哈喽&#xff0c;大家好&#xff0c;我是老王&#xff0c;欢迎来到 Java 面试突击&#xff0c;我们今天来开始第 6 期的内容…

Linux debian利用ifconfig查看IP地址

net-tools工具箱包括arp,hostname, ifconfig, netstat, rarp, route, plipconfig, slattach, mii-tool and iptunnel and ipmaddr等命令。 debian系统使用ifconfig命令查看IP 地址时&#xff0c;出现如下提示&#xff1a; 一、查看debian系统是否安装ifconfig命令 使用wherei…

Redis 中的过期元素是如何被处理的?「视频版」——面试突击 002 期

本文以面试问题「Redis 中的过期元素是如何被处理的&#xff1f;」为切入点&#xff0c;用视频加图文的方式和大家聊聊 Redis 过期元素被处理的相关知识点。 涉及的知识点 过期删除策略有哪些&#xff1f;这些过期策略有哪些优缺点&#xff1f;Redis 使用的是什么过期策略&…

Linux debian安装DBeaver连接MySQL8、导入和导出数据库详细教程

一、DBeaver简介 ​ DBeaver 是一个基于 Java 开发&#xff0c;免费开源的通用数据库管理和开发工具&#xff0c;使用非常友好&#xff0c;且遵循ASL 协议。由于 DBeaver 基于 Java 开发&#xff0c;可以运行在各种操作系统上&#xff0c;比如Windows、Linux、macOS 等操作系统…

使用 Redis 如何实现查询附近的人?「视频版」——面试突击 003 期

面试问题 Redis 如何实现查询附近的人&#xff1f; 涉及知识点 Redis 中如何操作位置信息&#xff1f;GEO 底层是如何实现的&#xff1f;如何在程序实现查询附近的人&#xff1f;在实际使用中需要注意哪些问题&#xff1f; 视频答案 视频地址&#xff1a;https://www.bili…

利用URL

2019独角兽企业重金招聘Python工程师标准>>> Problem You have a HTML document that contains relative URLs, which you need to resolve to absolute URLs. Solution Make sure you specify a base URI when parsing the document (which is implicit when loadi…

Win10安装DBeaver连接MySQL8、导入和导出数据库详细教程

一、DBeaver简介 ​ DBeaver 是一个基于 Java 开发&#xff0c;免费开源的通用数据库管理和开发工具&#xff0c;使用非常友好&#xff0c;且遵循ASL 协议。由于 DBeaver 基于 Java 开发&#xff0c;可以运行在各种操作系统上&#xff0c;比如Windows、Linux、macOS 等操作系统…

「视频版」当线程池溢出之后,程序会奔溃吗?面试突击 007 期

哈喽&#xff0c;大家好&#xff0c;我是老王&#xff0c;欢迎来到第 7 期的 Java 面试突击。本文的面试题是&#xff0c;当线程池的任务溢出之后&#xff0c;程序会奔溃吗&#xff1f;这个问题问的是关于线程池的任务数超过线程池的承载能力之后&#xff0c;会出现什么情况&am…

有人说:轻量级锁一定比重量级锁快!我忍不住笑了

世界上不止有黑白两色&#xff0c;黑与白之间还是灰色的地带。在成人的世界里&#xff0c;大多数人喜欢非黑即白的观点来看待一个问题&#xff0c;例如《十二公民》中那个刚开始所有人都认定的“一定是富二代杀S了自己的亲身父亲”&#xff0c;到最后大家理性分析和推测之后发现…

Python Django设计模式及模板层

一、Django的MTV模式 MTV代表Model - Template - View &#xff08;模型-模板-视图&#xff09;模式。 M模型层&#xff08;Model&#xff09;负责与数据交互。 T模板层&#xff08;Template&#xff09;负责呈现内容到浏览器。 V视图层&#xff08;View&#xff09;是核心&…

在Tomcat中配配置数据源汇总

为什么80%的码农都做不了架构师&#xff1f;>>> Tomcat本身不具备处理提供数据源的能力。借助于一些开源数据源实现&#xff0c;如&#xff1a;DBCP和C3P0等。 一、在http://commons.apache.org/可下载这些是Tomcat提供配置数据源所需的类库。 注意&#xff1a;Tom…