?
This document uses PHP Chinese website manual Release
SLOWLOG subcommand [argument]
自2.2.12起可用。
該命令用于讀取和重置Redis慢速查詢日志。
Redis Slow Log是一個記錄查詢超過指定執(zhí)行時間的系統(tǒng)。執(zhí)行時間不包括I / O操作,如與客戶端交談,發(fā)送回復等等,但僅僅是實際執(zhí)行命令所需的時間(這是執(zhí)行命令的唯一階段,其中線程被阻止并且不能同時服務于其他請求)。
您可以使用兩個參數(shù)配置慢日志:slowlog-log-slow-than 告知 Redis 為了記錄命令,執(zhí)行時間(微秒)超過了多少。請注意,負數(shù)將禁用慢日志,而值為零將強制記錄每條命令。slowlog-max-len 是慢日志的長度。最小值為零。當記錄新的命令并且慢日志已經(jīng)處于其最大長度時,為了留出空間,將最老的命令從記錄的命令隊列中移除。
配置可以通過編輯完成,也可以redis.conf
在服務器運行時使用CONFIG GET和CONFIG SET命令來完成。
慢日志在內存中累積,因此沒有寫入關于慢命令執(zhí)行信息的文件。這使得日志記錄非常快,可以啟用所有命令的日志記錄(將 slowlog-log-slow- config 配置參數(shù)設置為零),同時影響較小。
要讀取慢日志,使用 SLOWLOG GET 命令,該命令將返回慢日志中的每個條目??梢詢H返回N個最近的條目,并將其他參數(shù)傳遞給該命令(例如 SLOWLOG GET 10)。
請注意,為了讀取慢日志輸出,您需要使用 redis-cli 的最新版本,因為它使用了以前在 redis-cli 中執(zhí)行的一些協(xié)議功能(深度嵌套的多批量響應)。
redis 127.0.0.1:6379> slowlog get 2 1) 1) (integer) 14 2) (integer) 1309448221 3) (integer) 15 4) 1) "ping" 2) 1) (integer) 13 2) (integer) 1309448128 3) (integer) 30 4) 1) "slowlog" 2) "get" 3) "100"
還有只有 Redis 4.0或更高版本才能發(fā)布的可選字段:
5) "127.0.0.1:58217" 6) "worker-123"
每個條目由四個(或以 Redis 4.0開頭的六個)字段組成:
每個慢日志條目的唯一漸進標識符。
處理記錄的命令的 UNIX 時間戳。
執(zhí)行所需的時間量,以微秒為單位。
組成命令參數(shù)的數(shù)組。
客戶端 IP 地址和端口(僅限4.0)。
客戶端名稱(如果通過 CLIENT SETNAME 命令設置)(僅限4.0)。
該條目的唯一 ID 可用于避免多次處理緩慢的日志條目(例如,您可能有一個腳本為每個新的慢日志條目發(fā)送電子郵件警報)。
在 Redis 服務器執(zhí)行過程中,ID 永遠不會被重置,只有服務器重啟才會重置它。
使用命令 SLOWLOG LEN 可以獲得慢日志的長度。
您可以使用 SLOWLOG RESET 命令重置慢日志。一旦刪除,信息將永遠丟失。