redis專題 slow log詳解

2022-03-28 05:37:34 字數 2992 閱讀 8923

slowlog subcommand [argument]

什麼是 slowlog

slow log 是 redis 用來記錄查詢執行時間的日誌系統。

查詢執行時間指的是不包括像客戶端響應(talking)、傳送回覆等 io 操作,而單單是執行乙個查詢命令所耗費的時間。

另外,slow log 儲存在記憶體裡面,讀寫速度非常快,因此你可以放心地使用它,不必擔心因為開啟 slow log 而損害 redis 的速度。

設定 slowlog

slow log 的行為由兩個配置引數(configuration parameter)指定,可以通過改寫 redis.conf 檔案或者用config get

config set

命令對它們動態地進行修改。

第乙個選項是slowlog-log-slower-than,它決定要對執行時間大於多少微秒(microsecond,1秒 = 1,000,000 微秒)的查詢進行記錄。

比如執行以下命令將讓 slow log 記錄所有查詢時間大於等於 100 微秒的查詢:

config set slowlog-log-slower-than 100

而以下命令記錄所有查詢時間大於 1000 微秒的查詢:

config set slowlog-log-slower-than 1000

另乙個選項是slowlog-max-len,它決定 slow log 最多能儲存多少條日誌, slow log 本身是乙個 fifo 佇列,當佇列大小超過slowlog-max-len時,最舊的一條日誌將被刪除,而最新的一條日誌加入到 slow log ,以此類推。

以下命令讓 slow log 最多儲存 1000 條日誌:

config set slowlog-max-len 1000

使用config get

命令可以查詢兩個選項的當前值:

redis> config get slowlog-log-slower-than

1) "slowlog-log-slower-than"

2) "1000"

redis> config get slowlog-max-len

1) "slowlog-max-len"

2) "1000"

檢視 slow log

要檢視 slow log ,可以使用slowlog get

或者slowlog get number

命令,前者列印所有 slow log ,最大長度取決於slowlog-max-len選項的值,而slowlog get number

則只列印指定數量的日誌。

最新的日誌會最先被列印:

# 為測試需要,將 slowlog-log-slower-than 設成了 10 微秒

redis> slowlog get

1) 1) (integer) 12 # 唯一性(unique)的日誌識別符號

2) (integer) 1324097834 # 被記錄命令的執行時間點,以 unix 時間戳格式表示

3) (integer) 16 # 查詢執行時間,以微秒為單位

4) 1) "config" # 執行的命令,以陣列的形式排列

2) "get" # 這裡完整的命令是 config get slowlog-log-slower-than

3) "slowlog-log-slower-than"

2) 1) (integer) 11

2) (integer) 1324097825

3) (integer) 42

4) 1) "config"

2) "get"

3) "*"

3) 1) (integer) 10

2) (integer) 1324097820

3) (integer) 11

4) 1) "config"

2) "get"

3) "slowlog-log-slower-than"

# ...

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

檢視當前日誌的數量

使用命令slowlog len

可以檢視當前日誌的數量。

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

redis> slowlog len

(integer) 14

清空日誌

使用命令slowlog reset

可以清空 slow log 。

redis> slowlog len

(integer) 14

redis> slowlog reset

okredis> slowlog len

(integer) 0

可用版本:>= 2.2.12

時間複雜度:o(1)

返回值:取決於不同命令,返回不同的值。

Redis資料彙總專題

from 很多朋友反映,說nosqlfan上的資料 本篇為redis 部分的資料彙總。保持持續更新。使用redis bitmap進行活躍使用者統計 redis採用不同記憶體分配器碎片率對比 redis優化之網路延遲 redis 資料庫結構設計 使用redis的五個注意事項 利用redis構建高效的實...

Redis資料彙總專題

很多朋友反映,說nosqlfan上的資料 twemproxy twitter 開源的 redis proxy redis 常見的效能問題和解決方法 使用redis bitmap進行活躍使用者統計 redis採用不同記憶體分配器碎片率對比 redis如何處理客戶端連線 redis監控技巧 redis優...

redis專題十六 redis的常見幾個解決方案

一 快取預熱 現象 伺服器啟動之後迅速宕機 分析 1 前期準備工作 2 準備工作 3 實施 二 快取雪崩 現象 系統平穩執行過程中,忽然資料庫連線量激增,應用伺服器無法及時處理請求,可能前端頁面也會崩潰,資料庫崩潰,緊接著應用伺服器崩潰,redis集群崩潰,即使重啟資料庫等之後再次瞬間被流程放倒。分...