Redis 不能不了解的小功能(一)

本文属原创,转载请注明出处     https://my.oschina.net/U74F1zkKW/blog/1603453

redis有很多小功能,但是很实用。我们来介绍几个。

  •     慢查询
        许多存储系统都提供慢查询日志来帮助开发运维人员定位问题,比如mysql。
    慢查询日志就是系统计算每条命令的执行时间,当执行时间超过一定的阈值,就将这条命令的相关信息记录下来,redis也提供了类似的功能。
         这里列出一个图简单表述一个redis命令的生命周期:
     192632_znCV_1378204.png
          需要注意的是,慢查询只统计命令命令执行的过程,网络传输等并不统计,所以如果说没有慢查询并不代表客户端没有超时的问题。
        那么回到慢查询,这个东西如何配置,又存放在哪里?
        redis提供几个配置,slowlog-log-slower-than 和 slowlog-max-len。
        从字面上可以看出slowlog-log-slower-than就是之前提到的阈值,单位是微秒,默认是10000微秒也就是10ms。也就说如果一条命令执行时间超过10ms,就会被记录在慢日志中。那为什么10ms也算慢查询?在高并发得环境下,redis可以执行每秒几万的命令,10ms其实在这种环境下已经算是比较高的了。设置有些高要求的系统不能容忍。
        而另一个参数, slowlog-max-len的用处是设置存储慢日志多少条。redis其实用一个列表在内存中保存慢日志。当慢日志列表已经达到最大的条数的时候,最早插入的那一条将被从列表移出。
        配置这两个参数可以修改配置文件,可以再redis-cli中使用config set命令设置。
        如果要将上面提到的方式配置的参数持久化到本地配置文件,可以执行config rewrite命令。
        查询慢日志的命令:
            slowlog get [n]
        其中n代表要查看多少条慢日志。

        200257_QHzz_1378204.png

        一条慢日志一般都会有前4个属性,到了redis4.0以上版本出现了后面两个属性。
        查看慢日志的条数:
            slowlog len
        慢日志重置:
            slowlog reset

        慢查询能够有效帮助我慢找到redis的问题,但在实际使用中有几个建议:
        
        1、 slowlog-max-len配置建议:这个配置默认是128,线上可以调大,设置太小,可能比较重要的慢日志会被新的慢日志替换掉。线上可以设置1000以上,并不会占用大量内存。
        2、slowlog-log-slower-than配置建议: 这个配置默认为10ms,需要根据并发量来确定,对于高流量高并发得场景,如果命令执行时间超过1ms以上,那么也就是说此时的redis最多支撑1000 ops。因此对于这种场景应设置为1ms。
        3、慢查询统计只是命令执行时间,命令排队时间和网络传输时间并不包括,从客户端看,执行命令返回的时间肯定要比实际在redis执行命令的时间长。
        4、慢查询日志是在内存中,新的日志会覆盖以前的日志,如果想要看以前的日志,需要定期将日志保存出来。比如定期执行slowlog get命令,然后倒入到关系型数据,以便于以后查询。redis的私有云CacheCloud就提供了这样的功能。

        今天就到这里,有时间我会再介绍其他实用的小功能。

转载于:https://my.oschina.net/U74F1zkKW/blog/1603453

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值