首頁  >  文章  >  資料庫  >  Redis慢查詢日誌怎麼使用

Redis慢查詢日誌怎麼使用

王林
王林轉載
2023-05-28 15:37:121121瀏覽

慢查詢日誌

什麼是SLOW LOG?

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

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
OK

redis> CONFIG SET slowlog-max-len 5
OK

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

redis> SET msg "hello world"OK

redis> SET number 10086
OK

redis> 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慢查詢日誌怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除