2013-03-12 130 views
3

如何记录/测量Redis命令队列的大小。Redis命令队列大小

Redis是单线程的,所以它按顺序运行命令,因为我猜那里有命令队列,输入命令存储在哪里,并且一个接一个地执行。 SLOWLOG命令只显示执行时间,所以问题是,有没有办法在开始执行之前得到命令在队列中的时间。

回答

3

AFAIK,Redis中没有命令队列。

当有套件需要读取时,会通知事件循环。 Redis读取套接字,解析输入缓冲区并在输入缓冲区解码时执行命令。如果同时接收到多个命令(在不同的套接字上),它们只是作为相同事件循环迭代的一部分按顺序处理。

无法评估未决命令的确切数量。但是,有一种方法可以通过使用CLIENT LIST命令来评估输入缓冲区中仍然要处理的数据量。它对应于qbuf统计。

您还可以评估套接字缓冲区中尚待处理的数据量(数据尚未由Redis读取)。在Linux上,您可以使用/ proc/net/tcp中的统计信息。以下是使用此策略的Python脚本示例。

https://gist.github.com/dspezia/2344181

您可能需要脚本适应您的系统。