Redis慢查詢?nèi)罩九c監(jiān)視器問題
我們都知道MySQL有慢查詢?nèi)罩?/p>
Redis也有慢查詢?nèi)罩荆捎糜诒O(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 是一個開箱即用的可視化工具,具有功能齊全的度量儀表盤和圖形編輯器,有靈活豐富的圖形化選項,可以混合多種風(fēng)格,支持多個數(shù)據(jù)源特點。
Prometheus是一個開源的服務(wù)監(jiān)控系統(tǒng),它通過HTTP協(xié)議從遠程的機器收集數(shù)據(jù)并存儲在本地的時序數(shù)據(jù)庫上。
redis_exporter為Prometheus提供了redis指標的導(dǎo)出,配合Prometheus以及grafana進行可視化及監(jiān)控。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Redis Desktop Manager(Redis可視化工具)安裝及使用圖文教程
這篇文章主要介紹了Redis Desktop Manager(Redis可視化工具)安裝及使用圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04redis緩存數(shù)據(jù)庫中數(shù)據(jù)的方法
這篇文章主要為大家詳細介紹了redis緩存數(shù)據(jù)庫中數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07