?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
SLOWLOG subcommand [argument]
自2.2.12起可用。
該命令用于讀取和重置Redis慢速查詢?nèi)罩尽?/p>
Redis Slow Log是一個(gè)記錄查詢超過指定執(zhí)行時(shí)間的系統(tǒng)。執(zhí)行時(shí)間不包括I / O操作,如與客戶端交談,發(fā)送回復(fù)等等,但僅僅是實(shí)際執(zhí)行命令所需的時(shí)間(這是執(zhí)行命令的唯一階段,其中線程被阻止并且不能同時(shí)服務(wù)于其他請(qǐng)求)。
您可以使用兩個(gè)參數(shù)配置慢日志:slowlog-log-slow-than 告知 Redis 為了記錄命令,執(zhí)行時(shí)間(微秒)超過了多少。請(qǐng)注意,負(fù)數(shù)將禁用慢日志,而值為零將強(qiáng)制記錄每條命令。slowlog-max-len 是慢日志的長(zhǎng)度。最小值為零。當(dāng)記錄新的命令并且慢日志已經(jīng)處于其最大長(zhǎng)度時(shí),為了留出空間,將最老的命令從記錄的命令隊(duì)列中移除。
配置可以通過編輯完成,也可以redis.conf
在服務(wù)器運(yùn)行時(shí)使用CONFIG GET和CONFIG SET命令來完成。
慢日志在內(nèi)存中累積,因此沒有寫入關(guān)于慢命令執(zhí)行信息的文件。這使得日志記錄非常快,可以啟用所有命令的日志記錄(將 slowlog-log-slow- config 配置參數(shù)設(shè)置為零),同時(shí)影響較小。
要讀取慢日志,使用 SLOWLOG GET 命令,該命令將返回慢日志中的每個(gè)條目??梢詢H返回N個(gè)最近的條目,并將其他參數(shù)傳遞給該命令(例如 SLOWLOG GET 10)。
請(qǐng)注意,為了讀取慢日志輸出,您需要使用 redis-cli 的最新版本,因?yàn)樗褂昧艘郧霸?redis-cli 中執(zhí)行的一些協(xié)議功能(深度嵌套的多批量響應(yīng))。
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"
每個(gè)條目由四個(gè)(或以 Redis 4.0開頭的六個(gè))字段組成:
每個(gè)慢日志條目的唯一漸進(jìn)標(biāo)識(shí)符。
處理記錄的命令的 UNIX 時(shí)間戳。
執(zhí)行所需的時(shí)間量,以微秒為單位。
組成命令參數(shù)的數(shù)組。
客戶端 IP 地址和端口(僅限4.0)。
客戶端名稱(如果通過 CLIENT SETNAME 命令設(shè)置)(僅限4.0)。
該條目的唯一 ID 可用于避免多次處理緩慢的日志條目(例如,您可能有一個(gè)腳本為每個(gè)新的慢日志條目發(fā)送電子郵件警報(bào))。
在 Redis 服務(wù)器執(zhí)行過程中,ID 永遠(yuǎn)不會(huì)被重置,只有服務(wù)器重啟才會(huì)重置它。
使用命令 SLOWLOG LEN 可以獲得慢日志的長(zhǎng)度。
您可以使用 SLOWLOG RESET 命令重置慢日志。一旦刪除,信息將永遠(yuǎn)丟失。