redis
提供了5種資料結構,但除此之外,redis
還提供了注入慢查詢分析,redis shell
、pipeline
、事務、與lua
指令碼、bitmaps
、hyperloglog
、pubsub
、geo
等附加功能,這些功能可以在某些場景發揮很重要的作用.
許多儲存系統(如:mysql
)提供慢查詢日誌幫助開發與運維人員定位系統存在的慢操作.所謂慢查詢日誌就是系統在命令執行前後計算每條命令的執行時間,當超過預設閾值,就將這條命令的相關資訊(例如:發生時間,耗時,命令的詳細資訊)記錄到慢查詢日誌中,redis
也提供了類似的功能。
redis
命令執行流程:
1.傳送命令
2.命令排隊
3.命令執行
4.返回結果
需要注意,慢查詢只統計步驟3
的時間,所以沒有慢查詢並不代表客戶端沒有超時問題。
對於慢查詢功能,需要明確兩件事:
redis
提供了slowlog-log-slower-than
和slowlog-max-len
配置來解決這兩個問題.從字面意思就可以看出,slowlog-log-slower-than
就是這個預設閾值,它的單位是毫秒(1秒=1000000微秒
)預設值是10000
,假如執行了一條"很慢"的命令(例如key *
),如果執行時間超過10000微秒
,那麼它將被記錄在慢查詢日誌中。線上例項建議設定為1毫秒便於及時發現毫秒級以上的命令。
如果從字面意思看,slowlog-log-slower-than=0
會記錄所有命令,slowlog-log-slower-than<0
對於任何命令都不會進行記錄.
slowlog-max-len
只是說明了慢查詢日誌最多儲存多少條,並沒有說明存放在**?實際上redis
使用了乙個列表來儲存慢查詢日誌,slowlog-max-len
就是列表的最大長度.乙個新的命令滿足慢查詢條件時被插入到這個列表中,當慢查詢日誌列表已處於其最大長度時,最早插入的乙個命令將從列表中移出,例如slowlog-max-len
設定長度為64
.當有第65
條慢查詢日誌插入的話,那麼隊頭的第一條資料就出列,第65
條慢查詢就會入列.
在redis
中有兩種修改配置的方法,一種是修改配置檔案,另一種是使用config set
命令動態修改.例如下面使用config set
命令將slowlog-log-slower-than
設定為1毫秒.slowlog-max-len
設定為1024
:
config set slowlog-log-slower-than 1000
config set slowlog-max-len 1024
config rewrite
或者[root@localhost ~]# vim /usr/local/redis/6379.conf
# slow log
slowlog-log-slower-than 1000
slowlog-max-len 1024
如果需要將redis
將配置持久化到本地配置檔案,要執行config rewrite
命令.如下:
雖然慢查詢日誌存放在redis
記憶體列表中,但是redis
並沒有暴露這個列表的鍵,而是通過一組命令來實現對慢查詢日誌的訪問和管理.
(1) 獲取慢查詢日誌
slowlog get [n]
引數n
可以指定條數,例:
127.0.0.1:6370> slowlog get
1) 1) (integer) 666
2) (integer) 1456786500
3) (integer) 11615
4) 1) "bgrewriteaof"
2) 1) (integer) 665
2) (integer) 1456718400
3) (integer) 12006
4) 1) "setex"
2) "video_info_200"
3) "300"
4) "2"
...
可以看到每個查詢日誌有4個屬性組成,分別是慢查詢日誌的表示id
、發生時間戳、命令耗時、執行命令和引數,慢查詢列表:
(2) 獲取慢查詢日誌列表當前長度
slowlog len
例如,當前redis
中有45
條慢查詢:
127.0.0.1:6370> slowlog len
(integer) 45
(3) 慢查詢日誌重置
slowlog reset
實際是對列表做清理操作,例如:
127.0.0.1:6370> slowlog len
(integer) 23
127.0.0.1:6370> slowlog reset
ok127.0.0.1:6370> slowlog len
(integer) 0
慢查詢功能可以有效地幫助我們找到redis
可能存在的瓶頸,但在實際使用過程中要注意以下幾點: Redis擴充套件功能之慢查詢日誌
在mysql中存在慢日誌的概念 參考mysql索引原理之查詢優化 池塘裡洗澡的鴨子 cnblogs.com redis中也提供慢日誌的功能用於監視和優化查詢。下面介紹redis中慢日誌相關的操作 1 設定 在redis.conf中可以配置和慢查詢日誌相關的選項 redis使用列表儲存慢查詢日誌,採用...
Redis高階功能 慢查詢日誌
redis 提供了5種資料結構,但除此之外,redis 還提供了注入慢查詢分析,redis shell pipeline 事務 與 lua 指令碼 bitmaps hyperloglog pubsub geo 等附加功能,這些功能可以在某些場景發揮很重要的作用.許多儲存系統 如 mysql 提供慢查...
mysql之慢查詢日誌
一 mysql的慢查詢日誌是mysql提供的用來記錄響應時間超過閾值的語句,預設情況下mysql沒有開啟慢查詢日誌,需要手動開啟,開啟慢查詢日誌對資料庫效能會有一點影響,所以在不調優的情況下不建議開啟慢查詢日誌功能 1 檢視是否開啟慢查詢日誌的命令 show variables like slow ...