1. 程式人生 > >Redis slowlog慢查詢

Redis slowlog慢查詢

ring unix comm ive word 格式 server ping reids

slowlog (閱讀原文)
此命令用於讀取和重置redis慢請求日誌

redis slow log概述

redis的slow log記錄了那些執行時間超過規定時長的請求。執行時間不包括I/O操作(比如與客戶端進行網絡通信等),只是命令的實際執行時間(期間線程會被阻塞,無法服務於其它請求)。
有兩個參數用於配置slow log:
slowlog-log-slower-than:設定執行時間,單位是毫秒,執行時長超過該時間的命令將會被記入log。-1表示不記錄slow log; 0強制記錄所有命令。
slowlog-max-len:slow log的長度。最小值為0。如果日誌隊列已超出最大長度,則最早的記錄會被從隊列中清除。
可以通過編輯redis.conf文件配置以上兩個參數。對運行中的redis, 可以通過config get, config set命令動態改變上述兩個參數

讀取slow log

slow log是記錄在內存中的,所以即使你記錄所有的命令(將slowlog-log-slower-than設為0),對性能的影響也很小。
slowlog get: 列出所有slow log
slowlog get N:列出最近N條slow log

輸出格式

redis 127.0.0.1:6379> slowlog get 2
1) 1) (integer) 14
   2) (integer) 1309448221
   3) (integer) 15
   4) 1) "ping"
2) 1) (integer) 13
   2) (integer) 1309448128
   3) (integer) 30
   4) 1) "slowlog"
      2) "get"
      3) "100"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

每個條目由4個字段構成:
1)用於表示該條slow log的唯一id
2)以unix時間戳表示的日誌記錄時間
3)命令執行時間,單位:微秒
4) 執行的具體命令
只有當reids重啟後,id編號才會被重置。

獲取當前slowlog長度

slowlog len

重置slowlog

可以使用slowlog reset重置slow log。日誌一旦被刪除,將無法恢復。

Redis slowlog慢查詢