redis查询速度慢_redis读取速度

redis查询速度慢_redis读取速度当Redis客户端出现请求超时的时候,需要检查该时间点是否有慢查询,从而分析出由于慢查询导致的命令级联阻塞。

一篇文章快速搞懂Redis的慢查询分析

什么是慢查询?

慢查询,顾名思义就是比较慢的查询,但是究竟是哪里慢呢?首先,我们了解一下Redis命令执行的整个过程:

redis查询速度慢_redis读取速度

  1. 发送命令
  2. 命令排队
  3. 命令执行
  4. 返回结果

在慢查询的定义中,统计比较慢的时间段指的是命令执行这个步骤。没有慢查询,并不表示客户端没有超时问题,有可能网络传输有延迟,也有可能排队的命令比较多。

因为Redis中命令执行的排队机制,慢查询会导致其他命令的级联阻塞,所以当客户端出现请求超时的时候,需要检查该时间点是否有慢查询,从而分析出由于慢查询导致的命令级联阻塞。

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

什么是慢查询日志?

慢查询日志是Redis服务端在命令执行前后计算每条命令的执行时长,当超过某个阈值是记录下来的日志。日志中记录了慢查询发生的时间,还有执行时长、具体什么命令等信息,它可以用来帮助开发和运维人员定位系统中存在的慢查询。

如何获取慢查询日志?

可以使用slowlog get命令获取慢查询日志,在slowlog get后面还可以加一个数字,用于指定获取慢查询日志的条数,比如,获取3条慢查询日志:

> slowlog get 3
1) 1) (integer) 6107
   2) (integer) 1616398930
   3) (integer) 3109
   4) 1) "config"
      2) "rewrite"
2) 1) (integer) 6106
   2) (integer) 1613701788
   3) (integer) 36004
   4) 1) "flushall"
3) 1) (integer) 6105
   2) (integer) 1608722338
   3) (integer) 20449
   4) 1) "scan"
      2) "0"
      3) "MATCH"
      4) "*comment*"
      5) "COUNT"
      6) "10000"

代码100分

从上面的例子中,可以看出每一条慢查询日志都有4个属性组成:

  1. 唯一标识ID
  2. 命令执行的时间戳
  3. 命令执行时长
  4. 执行的命名和参数

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

如何获取慢查询日志的长度?

可以使用slowlog len命令获取慢查询日志的长度,比如:

代码100分> slowlog len
(integer) 121

在上例中,当前Redis中有121条慢查询日志。

如何清理慢查询日志?

可以使用slowlog reset命令清理慢查询日志,比如:

> slowlog len
(integer) 121
> slowlog reset
OK
> slowlog len
(integer) 0

怎么配置慢查询的参数?

正如上面提到的,慢查询需要如下两个配置:

  1. 命令执行时长的指定阈值。
  2. 存放慢查询日志的条数。

Redis对应提供了两个参数:slowlog-log-slower-than和slowlog-max-len,接下来我们详细介绍一下这两个参数。

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

slowlog-log-slower-than

slowlog-log-slower-than的作用是指定命令执行时长的阈值,执行命令的时长超过这个阈值时就会被记录下来。它的单位是微秒(1秒 = 1000毫秒 = 1000000微秒),默认是10000微秒。如果把slowlog-log-slower-than设置为0,将会记录所有命令到日志中。如果把slowlog-log-slower-than设置小于0,将会不记录任何命令到日志中。

在实际的生产环境中,需要根据Redis并发量来调整该配置。因为Redis采用单线程响应命令,如果命令执行时间在1000微秒以上,那么Redis最多可支撑OPS不到1000,所以对于高并发场景的Redis建议设置为1000微秒

slowlog-max-len

slowlog-max-len的作用是指定慢查询日志最多存储的条数。实际上,Redis使用了一个列表存放慢查询日志,slowlog-max-len就是这个列表的最大长度。当一个新的命令满足满足慢查询条件时,被插入这个列表中。当慢查询日志列表已经达到最大长度时,最早插入的那条命令将被从列表中移出。比如,slowlog-max-len被设置为10,当有第11条命令插入时,在列表中的第1条命令先被移出,然后再把第11条命令放入列表。

记录慢查询是Redis会对长命令进行截断,不会大量占用大量内存。在实际的生产环境中,为了减缓慢查询被移出的可能和更方便地定位慢查询,建议将慢查询日志的长度调整的大一些。比如可以设置为1000以上

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

如何进行配置

在Redis中有两个修改配置的方法:

  1. 修改Redis配置文件。比如,把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:
代码100分slowlog-log-slower-than 1000
slowlog-max-len 1200
  1. 使用config set命令动态修改。比如,还是把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:
> config set slowlog-log-slower-than 1000
OK
> config set slowlog-max-len 1200
OK
> config rewrite
OK

如果要Redis把配置持久化到本地配置文件,需要执行config rewrite命令。

总结

慢查询指的是命令执行时长比较长的查询。通过slowlog get命令获取慢查询日志;通过slowlog len命令获取慢查询日志的长度;通过slowlog reset命令清理慢查询日志。通过slowlog-log-slower-than配置命令执行时长的阈值;通过slowlog-max-len配置慢查询日志最多存储的条数。

微信公众号:万猫学社

微信扫描二维码

获得更多Java技术干货

redis查询速度慢_redis读取速度

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8904.html

(0)
上一篇 2023-02-19
下一篇 2023-02-19

相关推荐

  • 北京哪里可以开装饰工程发票-中国-新闻网

    北京哪里可以开装饰工程发票-中国-新闻网北京哪里可以开装饰工程发票【152 * 9б 28 * 21 б9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,是Andro…

    2023-02-01
    143
  • 为什么MySQL用B+树做索引

    为什么MySQL用B+树做索引索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。 索引是一种…

    2022-12-18
    147
  • zookeeper leader选举过程_台湾选举选票怎么分发

    zookeeper leader选举过程_台湾选举选票怎么分发前言 半数机制(Paxos 协议):集群中半数以上机器存活,集群可用。所以zookeeper适合装在奇数台机器上。 Zookeeper虽然在配置文件中并没有指定master和slave。但是,zook

    2023-04-20
    165
  • Python嵌套if语句:实现复杂的条件判断

    Python嵌套if语句:实现复杂的条件判断条件语句是编程语言中非常重要的一种语句类型,它根据特定的条件来判断是否执行某些代码块,也可以根据不同的条件执行不同的代码块。Python中常用的条件语句包括if语句、if-else语句、if-elif语句等。

    2024-03-13
    76
  • 使用Python安装PIL

    使用Python安装PILPython Imaging Library(PIL)是一款用于处理图片的Python库。它可以方便地打开、保存、裁剪、缩放等处理图片的操作,支持多种图片格式,包括bmp、gif、jpeg、png等。

    2024-06-30
    50
  • 基于Docker的Consul集群实现服务发现「建议收藏」

    基于Docker的Consul集群实现服务发现「建议收藏」服务发现 其实简单说,服务发现就是解耦服务与IP地址之间的硬绑定关系,以典型的集群为例,对于集群来说,是有多个节点的,这些节点对应多个IP(或者同一个IP的不同端口号),集群中不同节点责任是不一样的。

    2022-12-29
    162
  • mysql单表查询_多表内连接查询使用的语句是

    mysql单表查询_多表内连接查询使用的语句是MySQL单表查询语句详解

    2023-04-13
    154
  • Anaconda是Python工程师必备工具之一

    Anaconda是Python工程师必备工具之一Python语言火热发展,吸引了大量的程序员加入。然而,Python开发中需要用到的各种工具及其安装配置实际上还是一个很麻烦的事情。比如,虚拟环境、第三方库、各种IDE等,各种工具和开发环境需要一个一个地去装和配置,费时费力。这时候,Anaconda应运而生,成为了Python编程中的一大利器,并成为Python工程师们必备的开发工具之一。

    2024-06-07
    54

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注