Redis命令队列大小

8

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

Redis是单线程的,因此它按顺序运行命令,我猜想这里有一个命令队列,其中存储了传入的命令,并逐个执行。SLOWLOG命令仅显示执行时间,所以问题是,在开始执行之前,是否有一种方法可以获取命令在队列中等待的时间。

1个回答

7
据我所知,Redis中没有命令队列。
当套接字上有可读取内容时,事件循环会受到通知。Redis读取套接字,解析输入缓冲区并执行从输入缓冲区解码的命令。如果同时接收到多个命令(在不同的套接字上),它们只作为同一事件循环迭代的一部分按顺序进行处理。
无法评估待处理命令的确切数量。但是,可以使用CLIENT LIST命令来评估仍需处理的输入缓冲区中的数据量。它对应于qbuf统计信息。
您还可以评估还未被Redis读取的套接字缓冲区中的剩余数据量。在Linux上,可以使用/proc/net/tcp中找到的统计信息。以下是一个使用此策略的Python脚本示例。

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

你可能需要根据你的系统进行脚本适配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接