Redis慢查询解决办法

Redis为什么会出现码查询:

Redis是单线程的,所有的请求发送过来的时候都是需要排队的(先进先出的队列),当一个查询语句非常耗时的话,在它之后的语句都是需要排队等待的,这种情况经常会造成客户端超时。

下面是一条Redis命令的声明周期,如果步骤3执行命令非常耗时的话,会导致大量命令阻塞在步骤2上面:
Redis慢查询详解

配置慢查询日志:

在Redis中配置慢查询有两种方式,一种是修改配置文件,另一种是使用动态命令去配置:

# 阈值,超出此时间段的命令会被记录为慢查询,单位为微秒,默认为10000微秒。注:1秒 = 1000000(一百万微秒)
# 如果设置为0的话,则会记录全部Redis命令,设置<0则全部不记录
config set slowlog-log-slower-than 10000
# 保留多少条慢查询日志,属于先进先出的队列,如果设置过小,可能导致部分慢查询丢失
config set slowlog-max-len 1000
# 用户更新配置文件
config rewrite
获取慢查询日志:
# 获取当前慢查询条数
slowlog len
# 获取n条慢查询日志,n为空则查询全部
slowlog get [n]
查看慢查询日志:
redis> SLOWLOG GET
1) 1) (integer) 4               # 日志的唯一标识符(uid)
   2) (integer) 1378781447      # 命令执行时的 UNIX 时间戳
   3) (integer) 13              # 命令执行的时长,以微秒计算
   4) 1) "SET"                  # 命令以及命令参数,以数组的形式显示,拼成一句话就是整个命令
      2) "database"
      3) "Redis"
2) 1) (integer) 3
   2) (integer) 1378781439
   3) (integer) 10
   4) 1) "SET"
      2) "number"
      3) "10086"
注意:
  • 慢查询只记录查询时间,并不包括排队时间和网络传输时间
  • 建议持久化慢查询日志,方便日后整理调优
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

素人岳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值