当前位置: 首页 > news >正文

【赵渝强老师】Redis的慢查询日志

1

Redis慢查询日志帮助开发和运维人员定位系统存在的慢操作。慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详细信息)记录下来。Redis客户端的一条命令可以分为四个部分执行,如下图所示。

2

image.png
点击这里查看视频讲解:【赵渝强老师】Redis的慢查询日志

一条Redis的慢查询日志由以下四个属性组成:标识ID,发生时间戳,命令耗时,执行命令和参数。

提示:需要注意的是,慢查询日志只是统计执行命令的时间,所以慢查询并不代表客户端没有超时问题。

一、慢查询的配置参数

Redis提供的慢查询配置参数如下:

127.0.0.1:6379> CONFIG GET slowlog*
1) "slowlog-max-len"
2) "128"
3) "slowlog-log-slower-than"
4) "10000"

其中:

  • slowlog-max-len
    Redis使用一个列表来存储慢查询日志,showlog-max-len就是列表的最大长度(默认值是128)。当慢查询日志已经到达列表的最大长度时,又有慢查询日志要进入列表,则最早插入列表的日志将会被移出列表,新日志被插入列表的末尾。
  • slowlog-log-slower-than
    Redis预设的慢查询时间阀值(默认值是10000微秒)。如果一条命令的执行时间超过10000微妙,那么它将被记录在慢查询日志中。如果slowlog-log-slower-than的值是0,则会记录所有命令。如果slowlog-log-slower-than的值小于0,则任何命令都不会记录日志。例如:
127.0.0.1:6379> config set slowlog-log-slower-than 0
OK
image.png
点击这里查看视频讲解:【赵渝强老师】查看Redis的慢查询日志

二、【实战】管理慢查询日志

下面通过具体的操作步骤来演示如何管理和使用Redis提供的慢查询日志。

(1)向Redis中插入一条数据

127.0.0.1:6379> set location Beijing
127.0.0.1:6379> hmset user001 name Tom age 24 gender Male

(2)获取慢查询日志:

slowlog get [n]# 其中N代表获取的日志条数。如果不提供N的值,将获取所有的慢查询日志记录。
# 下面的语句将获取最近的3条慢查询日志。127.0.0.1:6379> slowlog get 3
1) 1) (integer) 9				慢查询标识ID
2) (integer) 1650100709			慢查询发生时间戳
3) (integer) 7					命令耗时
4) 1) "hmset"					执行命令和参数
2) "user001"
3) "name"
4) "Tom"
5) "age"
6) "24"
7) "gender"
8) "Male"
5) "127.0.0.1:48218"
6) ""
2) 1) (integer) 8				慢查询标识ID
2) (integer) 1650100706			慢查询发生时间戳
3) (integer) 6					命令耗时
4) 1) "set"						执行命令和参数
2) "location"
3) "Beijing"
5) "127.0.0.1:48218"
6) ""
3) 1) (integer) 7				慢查询标识ID
2) (integer) 1650100698			慢查询发生时间戳
3) (integer) 11					命令耗时
4) 1) "slowlog"					执行命令和参数
2) "get"
3) "3"
5) "127.0.0.1:48218"
6) ""

(3)获取慢查询日志列表的当前长度:slowlog len

127.0.0.1:6379> slowlog len
(integer) 11# 提示:当前Redis慢查询日志队列中存在11条记录。

(4)重置慢查询日志:slowlog reset

127.0.0.1:6379> slowlog reset
OK
127.0.0.1:6379> slowlog len
(integer) 1# 提示:该操作实际是对列表做清理操作

三、慢查询日志最佳实践

Redis提供的慢查询日志对应诊断Redis数据库实例在运行过程中发生的性能问题是非常有帮助的。因此在实际环境中使用Redis的慢查询日志时有以下几点建议。

  • slowlog-max-len的设置建议
    线上环境建议调大慢查询日志的列表,记录慢查询日志时Redis会对长命令做截断操作,并不会占用大量内存。增大慢查询列表可以减缓慢查询被剔除出列表的可能性。例如线上可以设置为1000以上。
  • slowlog-log-lower-than的设置建议
    需要根据Redis的并发量调整该值。由于Redis采用单线程响应名利,对于高流量的场景,如果执行命令的时间在1毫秒以上,那么Redis最多可支撑OPS(每秒操作次数)不到1000,因此高OPS场景的Redis建议设置为1毫秒。
  • 慢查询只记录命令执行时间,并不包括命令排队时间和网络传输时间。
    因此客户端命令的执行时间要大于Redis服务器实际执行命令的时间。因为命令执行排队极致,慢查询会导致命令级联阻塞,因此当客户端出现请求超时,需要检查该时间点是否有对应的慢查询,从而分析是否因为慢查询导致的命令级联阻塞
  • 慢查询日志是一个先进先出队列
    慢查询较多的情况下,可能会丢失部分慢查询命令,可以定期执行slow get命令将慢查询日志持久化到其他存储中。然后制作可视化界面查询。
http://www.zskr.cn/news/115825.html

相关文章:

  • 容器异常或停止自动启动脚本
  • 2025年靠谱的立式胶体磨厂家最新TOP排行榜 - 品牌宣传支持者
  • Frappe Gantt:打造专业级项目时间管理体验的JavaScript甘特图库
  • 基于Vue的山林动植物科普资源系统设计与实现任务书
  • 2025名义雇主EOR服务商选择指南:Safeguard Global在澳洲市场优势分析 - 品牌2025
  • 【赵渝强老师】MongoDB文档级别的并发控制
  • HLS.js快速上手:5个步骤构建专业级浏览器视频播放器
  • 2025年评价高的大型均质机行业内知名厂家排行榜 - 品牌宣传支持者
  • h5网页实现人脸识别(vue3+ts)
  • React Big Calendar终极指南:从零构建企业级日历应用的完整教程
  • 2025年质量好的植物纤维百洁布厂家综合实力榜(2025) - 品牌宣传支持者
  • FlashDB / Easyflash触发GC导致系统卡死的解决方法分享
  • llm范式(ReAct、Plan-and-Execute)
  • 基于Vue.js和SpringBoot的新能源汽车充电站管理系统外文翻译
  • 51、Linux网络工具配置与网络连接搭建指南
  • WebPShop:Photoshop终极WebP解决方案,5分钟快速上手
  • 思源宋体体积优化指南:从20MB到8MB的实战方法
  • 如何快速解决Edge-TTS语音合成地区访问限制问题
  • Tiled瓦片碰撞蒙版终极指南:让游戏角色不再穿墙
  • EmotiVoice能否替代真人配音?实测结果告诉你
  • 2025年评价高的550℃脱硝催化剂品牌厂家排行榜 - 行业平台推荐
  • 实验室超纯水机厂家哪家好?Top前三如何选? - 品牌推荐大师
  • Next.js认证系统终极指南:基于Clerk的完整多租户解决方案
  • ModEngine2 架构重构:运行时注入技术的核心实现原理深度解析
  • AlphaPose完全指南:多人姿态估计实战宝典与性能优化终极方案
  • 在线图片转ico
  • 2025 年 12 月电机驱动厂家权威推荐榜:高效节能与智能控制技术领先品牌深度解析 - 品牌企业推荐师(官方)
  • NetBox拓扑视图插件:5分钟实现智能网络拓扑可视化
  • OpenVidu开源视频会议平台从零搭建完整教程
  • Quill编辑器文本格式化终极指南:快速掌握字体大小控制技巧