redis性能吞吐量瓶颈_面试官:如何用慢查询找到 Redis 的性能瓶颈?
概述
Redis数据库是一个基于内存的 key-value存储系统,现在redis最常用的使用场景就是存储缓存用的数据,在需要高速读/写的场合使用它快速读/写,从而缓解应用数据库的压力,进而提升应用处理能力。
许多数据库会提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当然在数据库中最常见的就是select这些sql语句了,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,其实Redis也提供了类似的功能。
一、相关参数
Redis主要提供了slowlog-log-slower-than和slowlog-max-len两个配置参数来提供这项功能。两项参数分别用来设置慢查询的阈值以及存放慢查询的记录。
slowlog-log-slower-than参数设置什么情况下是慢语句,只有redis命令执行时间大于slowlog-log-slower-than的才会定义成慢查询,才会被slowlog进行记录。它的单位是微秒(1秒=1000毫秒=1000000微秒),在初始情况下默认值是10000,也就是10ms,假如执行了一条比较慢的命令,如果它的执行时间超过了 10ms ,那么它将被记录在慢查询日志中。(如果slowlog-log-slower-than=0会记录所有的命令,slowlog-log-slower than<0对于任何命令都不会进行记录)
slowlog-max-len说明了慢查询日志最多可以存储多少条记录,实际上Redis使用了一个列表来存储慢查询日志,slowlog-max-len就是列表的最大长度,它自身是一个先进先出队列,当slowlog超过设定的最大值后,会将最早的slowlog删除。简而言之当一个新的命令满足慢查询条件时会被插入到这个列表中,当慢查询日志列表已处于其最大长度时,最早插入的一个命令将从列表中移出,例如slowlog-max-len设置为 50 ,当有第51条慢查询插入的话,那么队头的第一条数据就出列,第51条慢查询就会入列。
二、设置redis慢查询
1、临时配置:CONFIG命令进行动态配置
#查看>config get slowlog-log-slower-than>config get slowlog-max-len#配置查询时间超过1毫米的命令进行记录并保存500条慢查询记录>config set slowlog-log-slower-than 1000>config set slowlog-max-len 500
注意通过config命令配置的为动态生效 , 一旦服务重启则会重新恢复为默认设置 , 所以建议在排查问题时通过config这种方式进行配置 , 但是服务稳定后通过修改配置文件方式进行最终确认 (可以通过config rewrite命令持久化到本地文件 , 但要主要启动redis时要指定redis.conf文件 该命令才可以生效)。
2、永久配置:配置redis.conf文件
# vi redis.confslowlog-log-slower-than 1000slowlog-max-len 500
三、查看redis慢查询记录
要想查看所记录的日志 ,主要使用 SLOWLOG GET 或者 SLOWLOG GET number 命令,前者将会输出所有的 slow log ,最大长度取决于 slowlog-max-len 选项的值,而 SLOWLOG GET number 则只打印指定数量的日志。
查看当前日志数量: 使用slowlog len命令查看日志数量。
如果日志条数过多,还可以使用slowlog reset命令进行日志清空 。
部分记录说明:
3) 1) (integer) 25 # 唯一性(unique)的日志标识符 2) (integer) 1565951323 # 被记录命令的执行时间点,以 UNIX 时间戳格式表示 3) (integer) 22720 # 查询执行时间,以微秒为单位 4) 1) "SMEMBERS" # 执行的命令,以数组的形式排列 2) "spring:session:expirations:1565950980000" # 这里完整的命令是 SMEMBERS spring:session:expirations:1565950980000
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
redis性能吞吐量瓶颈_面试官:如何用慢查询找到 Redis 的性能瓶颈?相关推荐
- redis为什么是单线程_面试官:Redis单线程为什么执行效率这么高?
点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇回顾: 面试官:Redis为什么设计成单线程的 ...
- redis做mysql缓存的优点_面试官:如何保障数据库和redis缓存的一致性
随着互联网的高速发展,使用互联网产品的人也越来越多,团队不可避免得也会面对越来越复杂的高并发业务场景(如下图),比如热点视频/文章的观看(读场景),热点视频/文章的评论,点赞等(写场景). 众所周知, ...
- jqgrid为什么表头和数据之间有间隙_面试官:你看过Redis数据结构底层实现吗?...
面试中,redis也是很受面试官亲睐的一部分.我向在这里讲的是redis的底层数据结构,而不是你理解的五大数据结构.你有没有想过redis底层是怎样的数据结构呢,他们和我们java中的HashMap. ...
- Redis综述篇:与面试官彻夜长谈Redis缓存、持久化、淘汰机制、哨兵、集群底层原理!...
点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 于哥你好,最近面试挺多的,尤其是在问到java面试题,Redis被问的特别多,比如Red ...
- redisserver是什么问题_面试官老是问:为什么采用单线程的Redis也会如此之快?...
Java面试笔试面经.Java技术每天学习一点 公众号Java面试 关注我不迷路 作者:kaito 来源:http://kaito-kidd.com/2020/06/28/why-redis-so-f ...
- redis怎么修改_面试官问我Redis事务,还问我有哪些实现方式
❝ 「第12期」 距离大叔的80期小目标还有68期,今天大叔要跟大家分享的内容是 -- Reids中的事务.同样,这也是redis中重要指数为四颗星的必备基础知识点.下面一起来了解一下吧. ❞ 相信大 ...
- 500并发 一台服务器的性能_面试官绝杀:系统是如何支撑高并发的?
作者 | 中华石杉 责编 | 伍杏玲 本文经授权转载石杉的架构笔记(ID:shishan100) 很多人面试的时候被问到一个让人特别手足无措的问题:你的系统如何支撑高并发? 大多数同学被问到这个问题压 ...
- redis删除过期key的算法_面试官别再问我Redis内存满了该怎么办了
概述 Redis的文章,我之前写过一篇关于「Redis的缓存的三大问题」,累计阅读也快800了,对于还只有3k左右的粉丝量,能够达到这个阅读量,已经是比较难了. 这说明那篇文章写的还过得去,收到很多人 ...
- redis主从复制如何保证数据一致性_面试官:Redis 主从复制时网络开小差了怎么整?...
上周因为实在太忙就认认真真写了一篇水文,吹了一下自己过去的经历,反响竟然超出了我的预期,并且后台还有读者留言表示想看续集的.哈哈,果然大家还是对水文更有热情. 这期我们继续回到之前的 Redis 话题 ...
最新文章
- 360面试题计算机面试题,奇虎360软件测试面试经验
- 华为鸿蒙智慧屏评价,华为智慧屏 S真实感受曝光评测,不看后悔死了!
- netcore 编译 html dll,ASP.NET Core Razor 视图预编译、动态编译
- iphone个人热点无法开启_无法在 iPhone 上正常使用“个人热点”怎么办?
- 加密用户向阿桑奇捐赠超40万美元的BTC用于法律辩护
- 计算机网络网络层之路由算法
- VS2015编译VS2013工程文件出错
- 机器学习- 吴恩达Andrew Ng - week3-4 solve overfitting
- JS逆向|JavaScript代码改写成Python代码之小试牛刀
- PreferenceScreen 的使用
- tinyalsa 终极详解
- 千万不要用memset函数对二维数组进行初始化
- spark JAVA 开发环境搭建及远程调试
- 抓包PC微信小程序失败解决方法
- 4g网络设置dns地址_上网速度慢,修改一下win10系统的DNS设置,网速飙升
- OSChina 教师节乱弹 ——辛苦你了,金将军
- 【循环搜寻法(使用卫兵)】
- 提高教育效率:教师如何制作智能学生成绩在线查询系统?
- 再看bit、kbit、bit/s,byte、kbyte、byte/s
- uoj#750-[UNR #6]小火车【二分,折半,鸽笼原理】