最新消息:

Redis中monitor命令解读

IT技术 ipcpu 27浏览 0评论

一、Redis MONITOR命令概述

Redis中MONITOR命令用于实时打印出 Redis 服务器接收到的命令。
它的返回值总是OK。

二、Redis MONITOR命令的执行结果

127.0.0.1:6379> MONITOR
OK
1648778398.868239 [0 10.193.0.200:48530] "HGETALL" "PUSH.DeviceFull:I:114338169"
1648778398.868294 [0 10.193.49.226:35128] "GET" "PUSH.DevicePidInfo:S:80D-002B675E9BD8"
1648778398.871154 [0 10.193.0.211:49272] "GET" "PUSH.DevicePidInfo:S:867363029034364"

他的返回结果有三个部分:

时间,格式seconds.microseconds 秒(时间戳).微秒
数据库名称、客户端IP和端口
执行的命令

时间只有一个,那就很疑惑了,那这个是开始时间、结束时间? 每个命令执行花费了多少时间?
经过一番资料查找,我们终于找到了:
One caveat on timing: MONITOR only shows the time a command completed, not when it started. On a very busy Redis server (like most of ours), this is fine because there’s always a request waiting to execute, but if you’re at a lesser rate of requests, the time taken will not be accurate.
MONITOR中的时间是执行结束的时间,由于Redis是单线程执行的,执行完一个命令,再去执行另外一个。
所以使用本次的时间减去上次的时间,就是本次命令的执行花费时间。
这种计算方式,对于比较繁忙的Redis服务器来说,相对比较准确,但是对于比较空闲的Redis就没啥参考意义了。

三、Redis MONITOR对于性能的损耗

Redis MONITOR开启之后,对Redis性能有一定的影响,官方说大概30%左右。
因此生产环境不要长期开启,可以仅在排除故障时使用。

四、Redis MONITOR的搭档redis-faina

redis-faina是一个通过解析redis的MONITOR命令,从而对redis实例进行性能诊断的工具。python2编写,只有一个文件,短小精悍。比较实用,是一款排错时使用的良品。使用方法如下:

$ redis-cli -p 6379 MONITOR > m.log
$ ./redis-faina.py ./m.log

redis-faina可以分析出RedisQPS、最多访问的前缀、访问次数最多的key、使用的最多的命令、请求的响应时间分布、耗时最多的命令、慢请求列表等数据。本站很早之前的Redis监控中就有介绍。

转载请注明:IPCPU-网络之路 » Redis中monitor命令解读

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址