Redis採用slowlog來記錄查詢執行時間的日誌系統。注意,這個查詢執行時間指的是不包括像客戶端回應(talking)、發送回覆等 IO 操作,而單單是執行一個查詢指令所耗費的時間。
slowlog 保存在記憶體裡面,讀寫速度非常快,因此我們可以放心地使用它,不必擔心因為開啟 slowlog 而損害 Redis 的速度。
slowlog 有兩個重要的配置,我們先透過 CONFIG GET slowlog-* 指令來查看現有的配置。
slowlog-log-slower-than表示慢查詢的閾值,以微秒為單位。如果查詢命令的執行時間超過設定的限制閾值,則該命令將記錄在慢查詢日誌中。記錄所有指令,當slowlog-log-slower-than=0。當slowlog-log-slower-than的值小於等於0時,將不會記錄任何指令。 slowlog-log-slower-than 的預設值為 10000 (10毫秒,1秒 = 1,000毫秒 = 1,000,000微秒)。
slowlog-max-len 代表慢速查詢日誌最大條數。這是一個先進先出佇列的儲存結構,當慢查詢日誌條目數量達到上限時,最早記錄的日誌條目將被銷毀。 slowlog-max-len 的預設值為 128,儲存在記憶體內,所以重啟 redis 會清空慢查詢日誌。
設定slowlog-log-slower-than 和slowlog-max-len 的指令非常簡單,如下:
使用SLOWLOG LEN 指令,查詢目前的慢查詢日誌記錄數。
當我們只需要查詢前幾個慢查詢記錄時,可以使用 SLOWLOG GET [n] 指令。
SLOWLOG GET [n] 若不加 n ,則取得全部慢查詢記錄。
清空慢查詢日誌使用 SLOWLOG RESET。請注意,不要將 slowlog-log-slower-than 設定得太大,因為過大的設定可能會導致沒有記錄被記錄下來。
以上是Redis中slowlog有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!