慢查詢,大家可能已經接觸到了MySQL的慢查詢。我們配置一個時間,如果查詢時間超過了我們設置的時間,我們就認為這是一個慢查詢.
如上圖所示:redis客戶端一條命令執行分4個步驟:
- 發送命令
- 命令進入隊列排隊
- 執行命令
- 返回結果
慢查詢統計的是第3步(執行命令)的時間。
參數配置
慢查詢有兩個參數需要配置:
- [ ] slowlog-log-slower-than 表示慢查詢預設的超時閥值,單位是微妙(μs)
1s = 1000ms = 1_000_000μs
默認10000微秒,即10毫秒
執行超過這個時間的命令將被記錄到慢查詢日志
slowlog-log-slower-than = 0:表示記錄所有命令。
slowlog-log-slower-than < 0:表示不記錄 - [ ] slowlog-max-len 表示慢查詢日志的條數
默認為 128
Redis使用列表存儲慢查詢日志
當已經記錄了128條慢查詢,現在又來一條,最早記錄的那條將被踢出,最新一條入列
修改配置
- 直接修改配置文件
- config set 命令動態修改
慢查詢日志操作
- 查詢
當我們執行了查詢命令之后,一條慢查詢記錄顯示如下:
可以看到日志由4個屬性組成:
1)日志的標識id
2)發生的時間戳
3)命令耗時
4)執行的命令和參數
- 獲取慢查詢列表長度
slowlog len
- 清空日志列表
# 如果慢查詢設置的閥值是0,那么再查詢len的時候為1。 slowlog reset
redis.conf慢查詢的注釋和配置