ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis的慢查询问题总结

2021-02-26 14:02:22  阅读:109  来源: 互联网

标签:总结 keys Redis redis 查询 命令 integer 日志


慢日志配置
生产环境redis配置了慢日志参数
查看redis慢日志配置,登陆redis服务器,使用redis-cli客户端连接redis server
使用命令 config get slow*

1 127.0.0.1:6379> config get slow*
2 1) "slowlog-log-slower-than"
3 2) "10000"
4 3) "slowlog-max-len"
5 4) "128"

慢日志说明:
config get slow* 查询有关慢日志的配置信息
查询结果第一条: 1) "slowlog-log-slower-than" 慢日志阈值配置项
查询结果第二条: 2) "10000" 阈值 ,单位微秒,此处为10毫秒,即超过10毫秒的操作都会记录下来
查询结果第三条: 3) "slowlog-max-len" 慢日志记录保存数量,如果保存数量已满,会删除最早的记录,最新的记录追加进来
查询结果第四条: 4) "1000" 慢日志记录保存数量的阈值,此处保存1000条记录

查看慢日志记录
查看redis慢日志记录,登陆redis服务器,使用redis-cli客户端连接redis server
使用命令 SLOWLOG GET N,查询结果如下图所示:

1) (integer) 65
2) (integer) 1500621891
3) (integer) 1186934
4) 1) "keys"
   2) "*CAP:*"
1) (integer) 65 值65数据类型为integer,表示该条日志的id
2) (integer) 1500621891  值1500621891数据类型为integer,表示操作redis的unix时间戳,单位秒。
3) (integer) 1186934 操作耗时,单位微秒
4)  1) "keys" 操作redis的命令 keys
2) "*CAP:*" 操作redis的命令keys 的参数,即查询所有包含CAP字符串的key

把操作redis的unix时间戳换算成北京时间为 2017/7/21 15:24:51 ,与某系统交易耗时的日志时间点一吻合。某系统交易耗时时间点二的问题也是如此。
结论:
Redis命令keys * 、 keys *xxx* 会遍历所有key,以查找符合条件的key,当数据量较大时该命令比较耗时,因为redis是单线程,当该命令执行的过程当中会阻塞其他命令请求,如果此时应用系统请求redis,所有的请求都会等待。在生环境中,严禁使用keys * 、 keys *xxx*,最好的办法是禁用相关命令。
补充说明:慢日志中的"BGREWRITEAOF"是redis fork的另外的线程在执行aof文件重新,该操作不会影响应用对redis的读写请求。

 

标签:总结,keys,Redis,redis,查询,命令,integer,日志
来源: https://www.cnblogs.com/jelly12345/p/14451982.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有