# Monitor

实时打印出 Redis 服务器接收到的命令,调试用

语法

MONITOR
  • 可用版本:

    1.0.0

  • 时间复杂度:

  • ACL 类别:

    @admin, @slow, @dangerous

MONITOR是一个调试命令,它流回 Redis 服务器处理的每个命令。它可以帮助理解数据库发生了什么。该命令既可以通过 也可以通过redis-cli使用telnet

在将 Redis 用作数据库和用作分布式缓存系统时,查看服务器处理的所有请求的能力对于发现应用程序中的错误非常有用。

$ redis-cli monitor
1339518083.107412 [0 127.0.0.1:60866] "keys" "*"
1339518087.877697 [0 127.0.0.1:60866] "dbsize"
1339518090.420270 [0 127.0.0.1:60866] "set" "x" "6"
1339518096.506257 [0 127.0.0.1:60866] "get" "x"
1339518099.363765 [0 127.0.0.1:60866] "eval" "return redis.call('set','x','7')" "0"
1339518100.363799 [0 lua] "set" "x" "7"
1339518100.544926 [0 127.0.0.1:60866] "del" "x"

使用SIGINT(Ctrl-C) 停止MONITOR通过redis-cli.

$ telnet localhost 6379
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
MONITOR
+OK
+1339518083.107412 [0 127.0.0.1:60866] "keys" "*"
+1339518087.877697 [0 127.0.0.1:60866] "dbsize"
+1339518090.420270 [0 127.0.0.1:60866] "set" "x" "6"
+1339518096.506257 [0 127.0.0.1:60866] "get" "x"
+1339518099.363765 [0 127.0.0.1:60866] "del" "x"
+1339518100.544926 [0 127.0.0.1:60866] "get" "x"
QUIT
+OK
Connection closed by foreign host.

手动发出QUITRESET命令以停止MONITOR通过 运行的流telnet

# MONITOR 未记录的命令

出于安全考虑,没有管理命令由MONITOR' 输出记录,敏感数据在命令中被编辑AUTH

此外,该命令QUIT也不会被记录。

# 运行 MONITOR 的成本

因为MONITOR流回所有命令,所以使用它是有代价的。以下(完全不科学的)基准数字说明了运行成本MONITOR可能是多少。

MONITOR运行的基准测试结果:

$ src/redis-benchmark -c 10 -n 100000 -q
PING_INLINE: 101936.80 requests per second
PING_BULK: 102880.66 requests per second
SET: 95419.85 requests per second
GET: 104275.29 requests per second
INCR: 93283.58 requests per second

MONITOR运行时的基准结果:MONITOR``redis-cli monitor > /dev/null

$ src/redis-benchmark -c 10 -n 100000 -q
PING_INLINE: 58479.53 requests per second
PING_BULK: 59136.61 requests per second
SET: 41823.50 requests per second
GET: 45330.91 requests per second
INCR: 41771.09 requests per second

在这种特殊情况下,运行单个MONITOR客户端可以将吞吐量降低 50% 以上。运行更多MONITOR客户端将进一步降低吞吐量。

# 返回

非标准返回值,只是将接收到的命令转储到无限流中。

# 行为改变历史

  • >= 6.0.0:AUTH从命令的输出中排除。
  • >= 6.2.0:"RESET以调用退出监控模式。
  • >= 6.2.4:" AUTH, HELLO, EVAL, EVAL_RO,EVALSHAEVALSHA_RO包含在命令的输出中。

# 反馈

如果您在此页面上发现问题,或有改进建议,请提交请求以合并或打开存储库中的问题。

Last Updated: 4/18/2023, 8:45:33 AM