慢查詢只記錄命令執行時間,並不包括命令排隊和網絡傳輸時間。所以客戶端執行命令的時間會大於命令實際執行時間。由於命令執行排隊機制,慢查詢會致使其餘命令級聯阻塞,所以當客戶端出現請求超時,須要檢查該時間點是否有對應的慢查詢,從而分析出是否爲慢查詢致使的命令級聯阻塞網絡
Redis提供了slowlog-log-slower-than和slowlog-max-len配置來解決這兩個問題日誌
若是slowlog-log-slower-than=0會記錄全部的命令,slowlog-log-slower-than<0對於任何命令都不會進行記錄code
在Redis中有兩種修改配置的方法,一種是修改配置文件,另外一種是使175用config set命令動態修改。例以下面使用config set命令將slowlog-log-slower-than設置爲20000微秒,slowlog-max-len設置爲1000隊列
config set slowlog-log-slower-than 20000 config set slowlog-max-len 1000 config rewrite
若是要Redis將配置持久化到本地配置文件,須要執行config rewrite命令內存
雖然慢查詢日誌是存放在Redis內存列表中的,可是Redis並無暴露這個列表的鍵,而是經過一組命令來實現對慢查詢日誌的訪問和管理get
每一個慢查詢日誌有4個屬性組成,分別是慢查詢日誌的標識id、發生時間戳、命令耗時、執行命令和參數it
獲取慢查詢日誌列表當前的長度 slowlog len可視化
慢查詢日誌重置 slowlog reset配置
因爲慢查詢日誌是一個先進先出的隊列,也就是說若是慢查詢比較多的狀況下,可能會丟失部分慢查詢命令,爲了防止這種狀況發生,能夠按期執行slow get命令將慢查詢日誌持久化到其餘存儲中(例如MySQL),而後能夠製做可視化界面進行查詢請求