Redis -- 慢查詢
客戶端請求到Redis的一個 生命週期
何為慢查詢?
系統在命令執行前後計算每條命令的執行時間,當超過預定閥值時,記錄命令的發生時間,耗時,命令的詳細資訊等。
Redis客戶端執行一條命令分為傳送命令、命令排隊、命令執行、返回結果。慢查詢只統計命令執行,所以沒有慢查詢並不代表客戶端沒有超時問題。
生命週期:
1客戶端傳送命令
2.因為redis是單執行緒 所以命令要排隊執行
3.執行命令,當命令被列為慢查詢 會被放入一個佇列
4.返回執行結果
注意:
1慢查詢只發生在第三階段;
2.客戶端超時不一定是慢查詢的原因,但慢查詢是客戶端超時的一個可能因素;
慢查詢的兩個配置-
-
slowlog-max-len
1)先進先出佇列
2)固定長度
3)儲存在記憶體內
2. slowlog-log-slower-than
1)慢查詢閾值(單位:微秒)
2)slowlog-log-slower-than=0,記錄所有命令
3)slowlog-log-slower-than<0,不記錄任何命令
_____________________________________________________________________________________________
引數配置
慢查詢有兩個引數需要配置:
[ ] slowlog-log-slower-than
表示慢查詢預設的超時閥值,單位是微妙(μs)
1s = 1000ms = 1_000_000μs
預設10000微秒,即10毫秒
執行超過這個時間的命令將被記錄到慢查詢日誌
slowlog-log-slower-than = 0:表示記錄所有命令。
slowlog-log-slower-than < 0:表示不記錄
[ ] slowlog-max-len
表示慢查詢日誌的條數
預設為 128
Redis使用列表儲存慢查詢日誌
當已經記錄了128條慢查詢,現在又來一條,最早記錄的那條將被踢出,最新一條入列
慢查詢命令:
運維經驗: