Redis开发与运维之第三章总结-小功能大用处

总结

1.慢查询中两个重要参数slowlog-log-slower-than(预设阙值) 和 slowlog-max-len(列表最大长度)

  1. 阙值的设立
  2. 慢查询记录存放在哪里

超过这个阙值的命令将会记录在一个地方,Redis采用了列表来存储慢查询日志,slowlog-max-len便是列表长度设置。

一个新的命令满足慢查询条件时候被插入到这个列表中,当慢查询日志列表已经处于最大长度时候,最早插入的一个命令会从列表中移出

有两种修改配置方法,一种是修改配置文件,另一种是使用config set命令动态修改。

config set slowlog-log-slower-than 20000

config set slowlog-max-len 1000

config rewrite

将配置进行持久化到本地配置文件,需要执行config rewrite

虽然慢查询日志是存放在redis内存列表中的,但是Redis并没有暴露这个列表的键,而是通过一组命令来实现对慢查询日志的访问和管理。

返回的每个慢查询实体,都由四个字段组成

  • 第一个字段是每个慢查询唯一标识。
  • 处理完命令后的,Unix 时间戳
  • 执行改名了所需要的时间,单位微秒
  • 命令的参数列表,是个数组类型

 慢查询日志数据结构

注意几个问题:

1.线上配置slowlog-max-len 建议调大慢查询列表,记录慢查询时Redis会对长命令做截断操作,并不会占用大量内存。增大慢查询列表可以减缓慢查询被提出的可能,设置为1000以上。

2.slowlog-log-slower-than 建议:默认超过10ms判定位慢查询,需要根据Redis并发量调整值。由于Redis单线程相应命令,对于高流量的场景,如果命令在执行1ms以上,那么Redis最多可支撑OPS不到1000.对于高OPS场景建议设置为1ms

3.慢查询只记录命令执行时间,并不包括命令排队和网络传输时间。因此客户端执行命令的时间会大于命令实际执行时间。因为命令执行排队机制,慢查询会导致其他名级联阻塞,如果出现客户端超时请求,需要检查该时间点是否有对应的慢查询,从而分析出是否是因为慢查询导致的命令级联阻塞。

4.慢查询日志是一个FIFO队列,如果查询比较多的情况下,可能会丢失部分命令,可以定期执行slow get将慢查询日志持久化到其他存储中,比如MySQL。

2.慢查询不包括命令网络传输和排队时间

3.有必要将慢查询定期存放

4.redis-cli 一些重要选项 --latency --bigkeys -i(最大间隔) -r (重复时间)

5.redis-benchmark 使用方法和重要参数(好冷门的指令。。)

6.Pipeline可以有效减少RTT次数,但每次Pipeline命令数量不能无节制。

7.Redis可以使用Lua脚本创造出原子、高效、自定义命令组合。

8.Redis执行Lua脚本有两种方法:eval 和 evalsha.

9.BitMaps 可以用来做独立用户统计,有效节省内存。

10.HyperLogLog 可以做统计独立总量时存在一定的误差,但是节省的内存量十分惊人。

11.BitMaps中setbit 一个大的偏移量 由于申请大量内存会导致阻塞

12.Redis发布订阅机制相比许多专业消息对流而凶功能较弱,不具备堆积和回溯消息的能力,但胜在足够简单。

猜你喜欢

转载自blog.csdn.net/cuiwei1026522829/article/details/85036682