Redis高階功能 慢查詢日誌

2021-08-03 08:13:13 字數 2303 閱讀 6934

redis 提供了5種資料結構,但除此之外, redis 還提供了注入慢查詢分析, redis shell 、 pipeline 、事務、與 lua 指令碼、 bitmaps 、 hyperloglog 、 pubsub 、 geo 等附加功能,這些功能可以在某些場景發揮很重要的作用.

許多儲存系統(如: mysql )提供慢查詢日誌幫助開發與運維人員定位系統存在的慢操作.所謂慢查詢日誌就是系統在命令執行前後計算每條命令的執行時間,當超過預設閾值,就將這條命令的相關資訊(例如:發生時間,耗時,命令的詳細資訊)記錄到慢查詢日誌中, redis 也提供了類似的功能.

redis 命令執行流程:

傳送命令

命令排隊

命令執行

返回結果

需要注意,慢查詢只統計步驟 3 的時間,所以沒有慢查詢並不代表客戶端沒有超時問題.

1) 慢查詢的兩個配置引數

對於慢查詢功能,需要明確兩件事:

redis 提供了 slowlog-log-slower-than 和 slowlog-max-len 配置來解決這兩個問題.從字面意思就可以看出, slowlog-log-slower-than 就是這個預設閾值,它的單位是毫秒( 1秒=1000000微秒 )預設值是 10000 ,假如執行了一條"很慢"的命令(例如 key * ),如果執行時間超過 10000微秒 ,那麼它將被記錄在慢查詢日誌中.

如果 slowlog-log-slower-than=0 會記錄所有命令, slowlog-log-slower-than<0 對於任何命令都不會進行記錄.

從字面意思看, slowlog-max-len 只是說明了慢查詢日誌最多儲存多少條,並沒有說明存放在**?實際上 redis 使用了乙個列表來儲存慢查詢日誌, slowlog-max-len 就是列表的最大長度.乙個新的命令滿足慢查詢條件時被插入到這個列表中,當慢查詢日誌列表已處於其最大長度時,最早插入的乙個命令將從列表中移出,例如 slowlog-max-len 設定長度為 64 .當有第 65 條慢查詢日誌插入的話,那麼隊頭的第一條資料就出列,第 65 條慢查詢就會入列.

在 redis 中有兩種修改配置的方法,一種是修改配置檔案,另一種是使用 config set 命令動態修改.例如下面使用 config set 命令將 slowlog-log-slower-than 設定為 20000微妙 . slowlog-max-len 設定為 1024 :

config set slowlog-log-slower-than 20000

config set slowlog-max-len 1024

config rewrite

如果需要將 redis 將配置持久化到本地配置檔案,要執行 config rewrite 命令.如下:

雖然慢查詢日誌存放在 redis 記憶體列表中,但是 redis 並沒有暴露這個列表的鍵,而是通過一組命令來實現對慢查詢日誌的訪問和管理.

(1) 獲取慢查詢日誌

slowlog get [n]
引數 n 可以指定條數.

例:

127.0.0.1:6370> slowlog get

1) 1) (integer) 666

2) (integer) 1456786500

3) (integer) 11615

4) 1) "bgrewriteaof"

2) 1) (integer) 665

2) (integer) 1456718400

3) (integer) 12006

4) 1) "setex"

2) "video_info_200"

3) "300"

4) "2"

...

可以看到每個查詢日誌有4個屬性組成,分別是慢查詢日誌的表示 id 、發生時間戳、命令耗時、執行命令和引數,慢查詢列表:

(2) 獲取慢查詢日誌列表當前長度

slowlog len
例如,當前 redis 中有 45 條慢查詢:

127.0.0.1:6370> slowlog len

(integer) 23

(3) 慢查詢日誌重置

slowlog reset
實際是對列表做清理操作,例如:

127.0.0.1:6370> slowlog len

(integer) 23

127.0.0.1:6370> slowlog reset

ok127.0.0.1:6370> slowlog len

(integer) 0

2) 實踐

慢查詢功能可以有效地幫助我們找到 redis 可能存在的瓶頸,但在實際使用過程中要注意以下幾點:

Redis慢查詢日誌學習功能

慢查詢日誌 什麼是slow log?slow log是redis用來記錄查詢執行時間超過給定時長的命令請求的日誌系統。查詢執行時間指的是不包括像客戶端響應 talking 傳送回覆等io操作,而單單是執行乙個查詢命令所耗費的時間。另外,slow log儲存在記憶體裡面,讀寫速度非常快,因此你可以放心...

Redis高階功能之慢查詢日誌

redis提供了5種資料結構,但除此之外,redis還提供了注入慢查詢分析,redis shell pipeline 事務 與lua指令碼 bitmaps hyperloglog pubsub geo等附加功能,這些功能可以在某些場景發揮很重要的作用.許多儲存系統 如 mysql 提供慢查詢日誌幫助...

Redis慢查詢日誌

於 1 傳送命令 2 命令排隊 3 命令執行 4 返回結果 注意 慢查詢只統計步驟3的時間,所以沒有慢查詢並不代表客戶端沒有超時問題。換句話說。redis的慢查詢記錄時間指的是不包括像客戶端響應 傳送回覆等io操作,而單單是執行乙個查詢命令所耗費的時間。config setslowlog log s...