1. 程式人生 > >Redis -- 慢查詢

Redis -- 慢查詢

客戶端請求到Redis的一個 生命週期

何為慢查詢?

   系統在命令執行前後計算每條命令的執行時間,當超過預定閥值時,記錄命令的發生時間,耗時,命令的詳細資訊等。

Redis客戶端執行一條命令分為傳送命令、命令排隊、命令執行、返回結果。慢查詢只統計命令執行,所以沒有慢查詢並不代表客戶端沒有超時問題。

生命週期:

1客戶端傳送命令

2.因為redis是單執行緒 所以命令要排隊執行

3.執行命令,當命令被列為慢查詢 會被放入一個佇列

4.返回執行結果

注意:

1慢查詢只發生在第三階段;

2.客戶端超時不一定是慢查詢的原因,但慢查詢是客戶端超時的一個可能因素;

 

慢查詢的兩個配置- 

  1. 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條慢查詢,現在又來一條,最早記錄的那條將被踢出,最新一條入列

 

慢查詢命令:

 

運維經驗: