網站首頁 編程語言 正文
我們都知道MySQL有慢查詢日志
Redis也有慢查詢日志,可用于監視和優化查詢
1、慢查詢設置
在redis.conf中可以配置和慢查詢日志相關的選項:
#執行時間超過多少微秒的命令請求會被記錄到日志上 0 :全記錄 <0 不記錄 slowlog-log-slower-than 10000 #slowlog-max-len 存儲慢查詢日志條數 slowlog-max-len 128
Redis使用列表存儲慢查詢日志,采用隊列方式(FIFO)
-
config set
的方式可以臨時設置,redis重啟后就無效 -
config set slowlog-log-slower-than
微秒 -
config set slowlog-max-len
條數
查看日志: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 # 命令執行時的UNIX時間戳 3) (integer) 65 # 命令執行的時長(微秒) 4) 1) "get" # 執行命令及參數 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 可以獲得執行較慢的redis命令,針對該命令可以進行優化:
- 盡量使用短的key,對于value有些也可精簡,能使用int就int。
- 避免使用keys *、hgetall等全量操作。
- 減少大key的存取,打散為小key 100K以上
- 將rdb改為aof模式
rdb fork 子進程 數據量過大 主進程阻塞 redis性能大幅下降
關閉持久化,(適合于數據量較小,有固定數據源)
- 想要一次添加多條數據的時候可以使用管道
- 盡可能地使用哈希存儲
- 盡量限制下redis使用的內存大小,這樣可以避免redis使用swap分區或者出現OOM錯誤
內存與硬盤的swap
3、監視器
Redis客戶端通過執行MONITOR命令可以將自己變為一個監視器,實時地接受并打印出服務器當前處理的命令請求的相關信息。
此時,當其他客戶端向服務器發送一條命令請求時,服務器除了會處理這條命令請求之外,還會將這條命令請求的信息發送給所有監視器。
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監控平臺
grafana、prometheus以及redis_exporter。
Grafana 是一個開箱即用的可視化工具,具有功能齊全的度量儀表盤和圖形編輯器,有靈活豐富的圖形化選項,可以混合多種風格,支持多個數據源特點。
Prometheus是一個開源的服務監控系統,它通過HTTP協議從遠程的機器收集數據并存儲在本地的時序數據庫上。
redis_exporter為Prometheus提供了redis指標的導出,配合Prometheus以及grafana進行可視化及監控。
總結
原文鏈接:https://blog.csdn.net/weixin_52851967/article/details/127694326
相關推薦
- 2021-12-12 Android如何監測文件夾內容變化詳解_Android
- 2022-05-20 python?關鍵字與標識符超詳細整理_python
- 2022-06-12 Go依賴注入DI工具wire使用詳解(golang常用庫包)_Golang
- 2022-12-10 C語言中如何實現桶排序_C 語言
- 2022-05-22 Nginx基礎location語法及功能配置實例_nginx
- 2023-12-12 TCP通信的實現-優化點對點聊天
- 2022-11-04 python使用tqdm模塊處理文件閱讀進度條顯示_python
- 2022-06-28 深入解析docker文件分層原理_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支