2013-03-12 129 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

您可能需要腳本適應您的系統。