Redis在生产中不得不重视的几个运维问题
Redis 運維的故障有哪些?如何排查?
常見的運維故障
-
使用 keys * 把庫堵死,——建議使用別名把這個命令改名
-
超過內存使用后,部分數據被刪除——這個有刪除策略的,選擇適合自己的即可
-
沒開持久化,卻重啟了實例,數據全掉——記得非緩存的信息需要打開持久化
-
RDB 的持久化需要 vm.overcommit_memory=1,否則會持久化失敗
-
沒有持久化情況下,主從,主重啟太快,從還沒認為主掛的情況下,從會清空自己的數據——人為重啟主節點前,先關閉從節點的同步
排查方法
-
了解清楚業務數據流是怎么樣的流向
-
結合 Redis 監控查看 QPS、緩存命中率、內存使用率等信息
-
確認機器層面的資源是否有異常
-
故障時及時上機,使用 redis-cli monitor 打印出操作日志,然后分析(事后分析此條失效)
-
和研發溝通,確認是否有大 Key 在堵塞(大 Key 也可以在日常的巡檢中獲得)
-
和組內同事溝通,確實是否有誤操作
-
和運維同事、研發一起排查流量是否正常,是否存在被刷的情況
-
更多的排查需要對線上系統的分析。
Redis 性能優化
-
根據不同業務選擇數據類型,有必要時對數據結構進行審核,減少數據冗余
-
精簡鍵名和鍵值,控制鍵值的大小
-
使用前綴管理好 key,防止key的重名導致value被覆蓋
-
使用 scan 代替 keys,將遍歷 Redis DB 中所有 key 的操作放到客戶端來做
-
避免使用 O(N) 復雜度的命令
-
配置使用 ziplist 來優化 list
-
合理配置 maxmemory
-
數據量大的情況,做好 key 和 value 的壓縮
-
利用管道,批量處理命令
-
根據不同業務選擇短鏈接或者長鏈接
-
定期使用 redis-cli --big-keys 檢測大 Key
?
總結
以上是生活随笔為你收集整理的Redis在生产中不得不重视的几个运维问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis高可用方案-公私混合云
- 下一篇: Redis面试题详解