redis慢查詢?nèi)罩镜脑L問和管理方式
redis慢查詢?nèi)罩镜脑L問和管理
通過一組命令來實現(xiàn)對慢查詢?nèi)罩镜脑L問和管理
(1)獲取慢查詢?nèi)罩?/h3>
命令:slowlog get
127.0.0.1:6379> slowlog get 1) 1) (integer) 1 ? ?2) (integer) 1513709400 ? ?3) (integer) 11 ? ?4) 1) "slowlog" ? ? ? 2) "get" 2) 1) (integer) 0 ? ?2) (integer) 1513709398 ? ?3) (integer) 4 ? ?4) 1) "config" ? ? ? 2) "set" ? ? ? 3) "slowlog-log-slower-than" ? ? ? 4) "2"
(2)獲取慢查詢?nèi)罩玖斜懋?dāng)前的長度
命令:slowlog len
127.0.0.1:6379> slowlog len (integer) 2
(3)慢查詢?nèi)罩局刂?/h3>
命令:slowlog reset
實際是對慢查詢?nèi)罩玖斜碜銮謇聿僮鳌?/p>
127.0.0.1:6379> slowlog len (integer) 6 127.0.0.1:6379> slowlog reset OK 127.0.0.1:6379> slowlog len (integer) 1 #為什么還有1個,因為閾值設(shè)的比較小,slowlog reset就屬于慢查詢
注意事項
慢查詢功能可以有效的幫助我們找到Redis可能存在的瓶頸,但在實際使用過程中要注意以下幾點:
(1)slowlog-max-len配置建議:線上建議調(diào)大慢查詢列表,記錄慢查詢時Redis會對長命令做截斷操作,并不會占用大量內(nèi)存。
增大慢查詢列表可以減緩慢查詢被剔除的可能。
(2)slowlog-log-slower-than配置建議:默認值超過10毫秒判定為慢查詢,需要根據(jù)Redis并發(fā)量調(diào)整該值。
由于Redis采用單線程響應(yīng)命令,對于高流量的場景,如果命令執(zhí)行時間在1毫秒以上,那么Redis最多可以支撐OPS不到1000,因此對于高OPS的場景的Redis建議設(shè)置1毫秒。
(3)慢查詢只記錄命令執(zhí)行時間,并不包括命令排隊和網(wǎng)絡(luò)傳輸時間。因此客戶端執(zhí)行命令的時間會大于命令實際執(zhí)行的時間。
因為命令執(zhí)行排隊機制,慢查詢會導(dǎo)致其他命令級聯(lián)阻塞,因此當(dāng)客戶端出現(xiàn)請求超時,
需要檢查該時間點是否有對應(yīng)的慢查詢,從而分析出是否為慢查詢導(dǎo)致的命令級聯(lián)阻塞。
(4)由于慢查詢?nèi)罩臼且粋€先進先出的隊列,也就是說如果慢查詢比較多的情況下,可能會丟失部分慢查詢命令,
為了防止這種情況發(fā)生,可以定期執(zhí)行slowlog get命令將慢查詢?nèi)罩境志没狡渌鎯χ校ɡ纾琈ySQL),
然后可以制作出可視化界面進行查詢。
Redis慢查詢總結(jié)
慢查詢分析
1、什么叫慢查詢?
類似于mysql中的慢查詢語句,當(dāng)查詢語句的執(zhí)行時間超過設(shè)置的時間閾值就是慢查詢語句,會放入慢查詢?nèi)罩局小?/p>
redis中慢查詢只統(tǒng)計命令生命周期中執(zhí)行命令的時間,所有沒有慢查詢并不代表客戶端沒有超時的問題。(客戶端命令生命周期:發(fā)送命令,命令排隊,命令執(zhí)行,命令返回)。
2、慢查詢的配置參數(shù)
redis提供了slowlog-log-slower-than和slowlog-max-len配置慢查詢。
1)使用slowlog-log-slower-than來設(shè)置執(zhí)行時間的閾值,默認是 10000微妙;
備注:slowlog-log-slower-than=0記錄所有的命令,slowlog-log-slower-than<0對任何命令都不進行記錄。
2)slowlog-max-len只是說明了慢查詢?nèi)罩咀疃啻鎯Χ嗌贄l,實際上慢查詢命令存儲在列表上,slowlog-max-len就是這個列表的最大長度。當(dāng)命令超過最大列表長度,按照先進先出算法,最早進入對了的移除。
配置方式:可以通過配置文件配置:

也可以通過命令行客戶端發(fā)送 config set命令動態(tài)修改:
config set slowlog-log-slower-than 20000 config set slowlog-max-len 1000
config rewrite(用來把配置的值持久化到本地配置文件中,啟動時需指定配置文件,否則持久化失敗)
3、慢查詢?nèi)罩镜脑L問和管理

- slowlog get獲取的日志分4個屬性:id,發(fā)生時間戳,執(zhí)行時間,執(zhí)行命令+參數(shù)
- slowlog reset 用于重置慢查詢?nèi)罩颈4媪斜恚褪乔闆r列表中的數(shù)據(jù)。
注意事項:由于慢查詢是一個先進先出的隊列,可能會丟失部分慢查詢命令,因此線上最好配置在1000以上,同時可以定期執(zhí)行slowlog get 命令將慢查詢?nèi)罩境志没狡渌鎯χ校ū热鏜ysql)。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
redis安裝和配置_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了redis安裝和配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
CentOS 6.5 64位下安裝Redis3.0.2的具體步驟
這篇文章主要介紹了CentOS 6.5 64位下安裝Redis3.0.2的具體步驟,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08
Redis中LRU算法和LFU算法的區(qū)別小結(jié)
在Redis中,LRU算法和LFU算法是兩種常用的緩存淘汰算法,它們可以幫助我們優(yōu)化緩存性能,本文主要介紹了Redis中LRU算法和LFU算法的區(qū)別,感興趣的可以了解一下2023-12-12
一起raid數(shù)據(jù)恢復(fù)及回遷成功的案例
這篇文章主要介紹了一起raid數(shù)據(jù)恢復(fù)及回遷成功的案例,需要的朋友可以參考下2017-04-04
Redis官方ORM框架比RedisTemplate更優(yōu)雅
這篇文章主要為大家介紹了Redis官方ORM框架比RedisTemplate更優(yōu)雅的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
Redis遍歷所有key的兩個命令(KEYS 和 SCAN)
這篇文章主要介紹了Redis遍歷所有key的兩個命令(KEYS 和 SCAN),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Spring?Boot實戰(zhàn)解決高并發(fā)數(shù)據(jù)入庫之?Redis?緩存+MySQL?批量入庫問題
這篇文章主要介紹了Spring?Boot實戰(zhàn)解決高并發(fā)數(shù)據(jù)入庫之?Redis?緩存+MySQL?批量入庫問題,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02

