如何记录/测量Redis命令的队列大小。
Redis是单线程的,所以它按顺序运行命令,因为我猜那里有命令队列,传入的命令被存储在其中,并逐个执行。SLOWLOG命令只显示执行时间,所以问题是,有没有办法在开始执行之前获取命令在队列中的时间。
发布于 2013-03-13 17:41:14
AFAIK,Redis中没有命令队列。
当套接字上有要读取的内容时,会通知事件循环。Redis读取套接字,解析输入缓冲区,并在从输入缓冲区解码命令时执行这些命令。如果同时(在不同套接字上)接收到多个命令,则它们将作为相同事件循环迭代的一部分按顺序进行处理。
没有办法评估挂起命令的确切数量。但是,有一种方法可以使用CLIENT LIST命令来评估输入缓冲区中仍需处理的数据量。它对应于qbuf统计量。
您还可以评估套接字缓冲区中仍需处理的数据量(Redis尚未读取的数据)。在Linux上,您可以使用/proc/net/tcp中的统计信息。下面是一个使用此策略的Python脚本示例。
https://gist.github.com/dspezia/2344181
您可能需要调整脚本以适应您的系统。
https://stackoverflow.com/questions/15372382
复制相似问题