Redis慢查詢日誌學習功能

2022-08-01 22:45:17 字數 2615 閱讀 5709

慢查詢日誌

什麼是slow log?

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

設定和檢視slowlog

slowlog-log-slower-than:選項指定執行時間超過多少微秒(1秒等於1,000,000微秒)的命令請求會被記錄到日誌上。舉個例子, 如果這個選項的值為100,那麼執行時間超過100微秒的命令就會被記錄到慢查詢日誌; 如果這個選項的值為500 , 那麼執行時間超過500微秒的命令就會被記錄到慢查詢日誌; 諸如此類。

slowlog-max-len:選項指定伺服器最多儲存多少條慢查詢日誌。伺服器使用先進先出的方式儲存多條慢查詢日誌: 當伺服器儲存的慢查詢日誌數量等於slowlog-max-len選項的值時,伺服器在新增一條新的慢查詢日誌之前,會先將最舊的一條慢查詢日誌刪除。舉個例子, 如果伺服器slowlog-max-len的值為100,並且假設伺服器已經儲存了100條慢查詢日誌, 那麼如果伺服器打算新增一條新日誌的話,它就必須先刪除目前儲存的最舊的那條日誌, 然後再新增新日誌。

讓我們來看乙個慢查詢日誌功能的例子,首先用config_set命令將slowlog-log-slower-than選項的值設為0微秒, 這樣redis伺服器執行的任何命令都會被記錄到慢查詢日誌中, 接著將slowlog-max-len選項的值設為5,讓伺服器最多隻儲存5條慢查詢日誌:

redis> config set slowlog-log-slower-than 0

okredis> config set slowlog-max-len 5

ok

接著, 我們用客戶端傳送幾條命令請求:

redis> set msg "hello world"

okredis> set number 10086

okredis> set database "redis"

ok

然後使用slowlog get命令檢視伺服器所儲存的慢查詢日誌:

redis> slowlog get

1) 1) (integer) 4 #日誌的唯一識別符號(uid);

2) (integer) 1378781447 #命令執行時的unix時間戳;

3) (integer) 13 #命令執行的時長,以微秒計算;

4) 1) "set" #命令以及命令引數;

2) "database"

3) "redis"

2) 1) (integer) 3

2) (integer) 1378781439

3) (integer) 10

4) 1) "set"

2) "number"

3) "10086"

3) 1) (integer) 2

2) (integer) 1378781436

3) (integer) 18

4) 1) "set"

2) "msg"

3) "hello world"

4) 1) (integer) 1

2) (integer) 1378781425

3) (integer) 11

4) 1) "config"

2) "set"

3) "slowlog-max-len"

4) "5"

5) 1) (integer) 0

2) (integer) 1378781415

3) (integer) 53

4) 1) "config"

2) "set"

3) "slowlog-log-slower-than"

4) "0"

如果這時再執行一條slowlog get 1命令,那麼我們將看到, 上一次執行的slowlog get命令已經被記錄到了慢查詢日誌中, 而最舊的、編號為0的慢查詢日誌已經被刪除, 伺服器的慢查詢日誌數量仍然為5條:

redis> slowlog get 1

1) 1) (integer) 5

2) (integer) 1378781521

3) (integer) 61

4) 1) "slowlog"

2) "get"

日誌的唯一id只有在redis伺服器重啟的時候才會重置,這樣可以避免對日誌的重複處理(比如你可能會想在每次發現新的慢查詢時發郵件通知你)。

使用命令slowlog len可以檢視當前日誌的數量。

請注意這個值和 slower-max-len的區別,它們乙個是當前日誌的數量,乙個是允許記錄的最大日誌的數量。

redis> slowlog len

(integer) 5

清空日誌

使用命令slowlog reset可以清空slow log 。

redis> slowlog reset

ok

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...

redis慢查詢日誌

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