Redis开发与运维学习笔记 — 第3章 小功能大用处

3.1 慢查询分析

1.所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详情)记录下来.
2.Redis客户端执行一条命令的步骤 : 发送命令 -> 命令排队 -> 命令执行 -> 返回结果
    - 注意 : 慢查询只提供步骤3(命令执行)的时间,所以没有慢查询并不代表客户端没有超时的问题
  1. 慢查询的配置参数

    • slowlog-log-slower-than : 预设阀值
      • 默认10000微秒,也就是0.01秒,如果本次命令执行时间超过了10000微秒,则会被记录在慢查询日志中
      • 如果slowlog-log-slower-than = 0,则会记录所有的命令
      • 如果slowlog-log-slower-than < 0,则对任何命令都不会进行记录
    • slowlog-max-len : 慢日志最多存储的条数.
      • 默认长度128
      • Redis使用列表进行存储慢查询日志的,而slowlog-max-len就是这个列表的长度,当日志到达该长度时,再次插入新日志时,会将最早插入的日志移除
    • 所有配置的查看都在redis.json这个文件中,也就是安装Redis时的目录下.
      • 也可以用命令config get slowlog-log-slower-than查看,config get ...可以用来查看任意的配置参数
  2. 动态修改配置参数

    • config set slowlog-log-slower-than 20000 : 把预设阀值改成20000微秒,因为是动态修改,所以重启Redis后会失效
    • config rewrite : 如果要Redis将配置持久化到本地配置文件,需要之慈宁宫此命令
      • 如果报错(error) ERR The server is running without a config file,则是因为没有找到配置文件所以无法把配置持久化到本地配置文件,我的解决办法是执行redis-server启动的时候直接把本地的配置文件位置写上去 -> redis-server /usr/local/redis-4.0.9/redis.conf
  3. 常用命令

    • 获取慢查询日志
      • slowlog get [n] : 参数n可以指定条数
        • 每个慢查询日志有4个属性组成,分别是 : ①慢查询日志的标识ID,②发生时间戳,③命令耗时,④执行命令和参数
    • 获取慢查询日志列表当前的长度
      • slowlog len
    • 慢查询日志重置
      • slowlog reset
  4. 注意事项

    • slowlog-max-len配置建议 : 线上建议调大慢查询列表,记录慢查询时Redis会对长命令做截断操作,并不会占用大量内存.增大慢查询列表可以减缓慢查询被剔除的可能,所以建议1000以上,例如1024
    • slowlog-log-slower-than配置建议 : 默认是10毫秒,但是需要根据Redis并发量调整该值.由于Redis采用单线程响应命令,对于高流量的场景,如果命令执行时间在1毫秒以上,那么Redis最多可支撑成OPS(operation per second 每秒操作次数,意味着每秒对Redis的持久化操作)不到1000,因为对于高OPS场景的Redis建议可根据情况进行减少默认值
    • 慢查询只会记录命令执行时间,并不包括命令排队和网络传输时间.因此客户端执行的命令时间会大于命令实际执行时间.因为命令执行排队机制,慢查询会导致其他命令级联阻塞,因此当客户端出现请求超时,需要检查该时间点是否有对应的慢查询,从而分析出是否是慢查询导致的命令级联阻塞
    • 由于慢查询日志时一个先进先出的队列,也就是说如果慢查询比较多的情况下,可能会丢失不分慢查询命令,为了防止这种情况发生,可以定期执行slow get命令将慢查询日志持久化其他存储中

3.2 Redis Shell

  1. redis-cli详解
    • Redis命令行客户端,执行redis-cli -help可查看全部参数
    • 以下所有命令参数都是前参数,后数值.例如redis-cli -h 127.0.0.1 -p 6379 -n 15 -r 3 -i 1 ping(命令结束后会返回到终端,而不是进入到redis操作)
    • -h : 连接的host地址,不写默认本地127.0.0.1
    • -p : 链接的port端口,不写默认6379
    • -a : auth密码,如果没有则不需要写
    • -n : 选择使用的db
    • -r : repeat代表将命令执行多次,这个命令就是执行3次++ping++redis-cli -r 3 ping
      • ping : 通常作为网络可用性的检查,ping命令可以对一个网络地址发送测试数据包,看该网络地址是否也有响应并统计响应时间,以此测试网络
    • -i : interval代表每隔几秒执行以此命令,可以和-r一起使用,就是每隔-i秒执行一次-r的命令,-i是以秒做单位,如果需要是毫秒,可以写成0.01
    • -c : cluster选项是链接Redis Cluster节点时需要使用的,-c选项可以防止moved和ask异常(属于集群概念)
    • --scan--pattern : 选项用于扫描指定模式的键,相当于使用scan命令
    • --slave : 是把当前客户端模拟成当前Redis节点的从节点,可以用来获取当前Redis节点的更新操作.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值