Redis高级特性和应用(三)

慢查询

许多存储系统(例如 MySQL)提供慢查询日志帮助开发和运维人员定位系统 存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时 间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的 详细信息)记录下来,Redis 也提供了类似的功能。
Redis 客户端执行一条命令分为如下 4 个部分:
在这里插入图片描述
1)发送命令
2)命令排队
3)命令执行
4)返回结果
需要注意,慢查询只统计步骤 3)的时间,所以没有慢查询并不代表客户端没有超时问题

慢查询配置

对于任何慢查询功能,需要明确两件事:多慢算慢,也就是预设阀值怎么设 置?慢查询记录存放在哪?

Redis 提供了 slowlog-log-slower-than 和 slowlog-max-len 配置来解决这两个问题。slowlog-log-slower-than 就是那个预设阀值,它的单位是微秒(1 秒= 1000 毫 秒= 1 000 000微秒),默认值是 10 000,假如执行了一条“很慢”的命令(例如 keys *),如果它的执行时间超过了 10 000 微秒,也就是 10毫秒,那么它将被记 录在慢查询日志中。

在这里插入图片描述
如果 slowlog-log-slower-than=0 表示会记录所有的命令, slowlog-log-slower-than<0 对于任何命令都不会进行记录。
slowlog-max-len用来设置慢查询日志最多存储多少条,并没有说明存放在哪。 实际上 Redis 使用了一个列表来存储慢查询日志,slowlog-max-len 就是列表的最 大长度。当慢查询日志列表被填满后,新的慢查询命令则会继续入队,队列中的 第一条数据机会出列。
虽然慢查询日志是存放在 Redis 内存列表中的,但是 Redis 并没有告诉我们 这里列表是什么,而是通过一组命令来实现对慢查询日志的访问和管理。

总结

slowlog-log-slower-than参数可以设置慢查询临界点,比如设置为0,视为记录所有的命令,10000,单位是微妙,则记录超过10ms的查询命令。
slowlog-max-len参数可以设置慢查询最多存储多条,假如这个参数是128,当存满128条后,后续第129条会继续入队,队列中第一条数据会出列。

慢查询操作命令

获取慢查询日志
slowlog get [n]
参数 n 可以指定查询条数。

可以看到每个慢查询日志有 6 个属性组成,分别是慢查询日志的标识 id、发 生时间戳、命令耗时(单位微秒)、执行命令和参数,客户端 IP、端口和客户端 名称。
在这里插入图片描述
获取慢查询日志列表当前的长度 slowlog len 慢查询日志重置 slowlog reset,实际是对列表做清理操作

Pipeline

前面我们已经说过,Redis 客户端执行一条命令分为如下 4 个部分:1)发送 命令 2)命令排队 3)命令执行 4)返回结果。
在这里插入图片描述
其中 1+4 称为 Round Trip Time (RTT,往返时间),也就是数据在网络上传输的 时间。
Redis 提供了批量操作命令(例如 mget、mset 等),有效地节约 RTT。但大部分命令是不支持批量操作的,例如要执行 n 次 hgetall 命令,并没有 mhgetall

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值