Redis慢查詢?nèi)罩九c監(jiān)視器問題
我們都知道MySQL有慢查詢?nèi)罩?/p>
Redis也有慢查詢?nèi)罩?,可用于監(jiān)視和優(yōu)化查詢
1、慢查詢設(shè)置
在redis.conf中可以配置和慢查詢?nèi)罩鞠嚓P(guān)的選項:
#執(zhí)行時間超過多少微秒的命令請求會被記錄到日志上 0 :全記錄 <0 不記錄 slowlog-log-slower-than 10000 #slowlog-max-len 存儲慢查詢?nèi)罩緱l數(shù) slowlog-max-len 128
Redis使用列表存儲慢查詢?nèi)罩?,采用隊列方式(FIFO)
config set的方式可以臨時設(shè)置,redis重啟后就無效config set slowlog-log-slower-than微秒config set slowlog-max-len條數(shù)
查看日志:slowlog get [n]
127.0.0.1:6379> config set slowlog-log-slower-than 0
OK
127.0.0.1:6379> config set slowlog-max-len 2
OK
127.0.0.1:6379> set name:001 zhaoyun
OK
127.0.0.1:6379> set name:002 zhangfei
OK
127.0.0.1:6379> get name:002
"zhangfei"
127.0.0.1:6379> slowlog get
1) 1) (integer) 7 # 日志的唯一標識符(uid)
2) (integer) 1589774302 # 命令執(zhí)行時的UNIX時間戳
3) (integer) 65 # 命令執(zhí)行的時長(微秒)
4) 1) "get" # 執(zhí)行命令及參數(shù)
2) "name:002"
5) "127.0.0.1:37277"
6) ""
2) 1) (integer) 6
2) (integer) 1589774281
3) (integer) 7
4) 1) "set"
2) "name:002"
3) "zhangfei"
5) "127.0.0.1:37277"
6) ""
# set和get都記錄,第一條被移除了。2、慢查詢定位&處理
使用slowlog get 可以獲得執(zhí)行較慢的redis命令,針對該命令可以進行優(yōu)化:
- 盡量使用短的key,對于value有些也可精簡,能使用int就int。
- 避免使用keys *、hgetall等全量操作。
- 減少大key的存取,打散為小key 100K以上
- 將rdb改為aof模式
rdb fork 子進程 數(shù)據(jù)量過大 主進程阻塞 redis性能大幅下降
關(guān)閉持久化,(適合于數(shù)據(jù)量較小,有固定數(shù)據(jù)源)
- 想要一次添加多條數(shù)據(jù)的時候可以使用管道
- 盡可能地使用哈希存儲
- 盡量限制下redis使用的內(nèi)存大小,這樣可以避免redis使用swap分區(qū)或者出現(xiàn)OOM錯誤
內(nèi)存與硬盤的swap
3、監(jiān)視器
Redis客戶端通過執(zhí)行MONITOR命令可以將自己變?yōu)橐粋€監(jiān)視器,實時地接受并打印出服務(wù)器當前處理的命令請求的相關(guān)信息。
此時,當其他客戶端向服務(wù)器發(fā)送一條命令請求時,服務(wù)器除了會處理這條命令請求之外,還會將這條命令請求的信息發(fā)送給所有監(jiān)視器。

Redis客戶端1
127.0.0.1:6379> monitor OK 1589706136.030138 [0 127.0.0.1:42907] "COMMAND" 1589706145.763523 [0 127.0.0.1:42907] "set" "name:10" "zhaoyun" 1589706163.756312 [0 127.0.0.1:42907] "get" "name:10"
Redis客戶端2
127.0.0.1:6379> 127.0.0.1:6379> set name:10 zhaoyun OK 127.0.0.1:6379> get name:10 "zhaoyun"
4、Redis監(jiān)控平臺
grafana、prometheus以及redis_exporter。
Grafana 是一個開箱即用的可視化工具,具有功能齊全的度量儀表盤和圖形編輯器,有靈活豐富的圖形化選項,可以混合多種風格,支持多個數(shù)據(jù)源特點。
Prometheus是一個開源的服務(wù)監(jiān)控系統(tǒng),它通過HTTP協(xié)議從遠程的機器收集數(shù)據(jù)并存儲在本地的時序數(shù)據(jù)庫上。
redis_exporter為Prometheus提供了redis指標的導出,配合Prometheus以及grafana進行可視化及監(jiān)控。

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于使用IDEA的springboot框架往Redis里寫入數(shù)據(jù)亂碼問題
這篇文章主要介紹了用IDEA的springboot框架往Redis里寫入數(shù)據(jù)亂碼問題,本文給大家分享解決方法通過圖文示例相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
redis底層數(shù)據(jù)結(jié)構(gòu)之skiplist實現(xiàn)示例
這篇文章主要為大家介紹了redis底層數(shù)據(jù)結(jié)構(gòu)之skiplist實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問題及解決
這篇文章主要介紹了redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07

