慢查詢日誌
什麼是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"然後使用slowlog get命令檢視伺服器所儲存的慢查詢日誌:okredis> set number 10086
okredis> set database "redis"
ok
redis> slowlog get如果這時再執行一條slowlog get 1命令,那麼我們將看到, 上一次執行的slowlog get命令已經被記錄到了慢查詢日誌中, 而最舊的、編號為0的慢查詢日誌已經被刪除, 伺服器的慢查詢日誌數量仍然為5條: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"
redis> slowlog get 1日誌的唯一id只有在redis伺服器重啟的時候才會重置,這樣可以避免對日誌的重複處理(比如你可能會想在每次發現新的慢查詢時發郵件通知你)。1) 1) (integer) 5
2) (integer) 1378781521
3) (integer) 61
4) 1) "slowlog"
2) "get"
使用命令slowlog len可以檢視當前日誌的數量。
請注意這個值和 slower-max-len的區別,它們乙個是當前日誌的數量,乙個是允許記錄的最大日誌的數量。
redis> slowlog len清空日誌(integer) 5
使用命令slowlog reset可以清空slow log 。
redis> slowlog resetok
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 ...