【redis】Redis 使用規(guī)范

Redis 使用規(guī)范分為兩大方面,主要包括業(yè)務(wù)層面和運維層面。

業(yè)務(wù)層面主要面向的業(yè)務(wù)開發(fā)人員:

1、key 的長度盡量短,節(jié)省內(nèi)存空間
2、避免 bigkey,防止阻塞主線程
3、4.0+版本建議開啟 lazy-free
4、把 Redis 當作緩存使用,設(shè)置過期時間
5、不使用復(fù)雜度過高的命令,例如SORT、SINTER、SINTERSTORE、ZUNIONSTORE、ZINTERSTORE
6、查詢數(shù)據(jù)盡量不一次性查詢?nèi)?,寫入大量?shù)據(jù)建議分多批寫入
7、批量操作建議 MGET/MSET 替代 GET/SET,HMGET/HMSET 替代 HGET/HSET
8、禁止使用 KEYS/FLUSHALL/FLUSHDB 命令
9、避免集中過期 key
10、根據(jù)業(yè)務(wù)場景選擇合適的淘汰策略
11、使用連接池操作 Redis,并設(shè)置合理的參數(shù),避免短連接
12、只使用 db0,減少 SELECT 命令的消耗
13、讀請求量很大時,建議讀寫分離,寫請求量很大,建議使用切片集群

運維層面主要面向的是 DBA 運維人員:

1、按業(yè)務(wù)線部署實例,避免多個業(yè)務(wù)線混合部署,出問題影響其他業(yè)務(wù)
2、保證機器有足夠的 CPU、內(nèi)存、帶寬、磁盤資源
3、建議部署主從集群,并分布在不同機器上,slave 設(shè)置為 readonly
4、主從節(jié)點所部署的機器各自獨立,盡量避免交叉部署,對從節(jié)點做維護時,不會影響到主節(jié)點
5、推薦部署哨兵集群實現(xiàn)故障自動切換,哨兵節(jié)點分布在不同機器上
6、提前做好容量規(guī)劃,防止主從全量同步時,實例使用內(nèi)存突增導(dǎo)致內(nèi)存不足
7、做好機器 CPU、內(nèi)存、帶寬、磁盤監(jiān)控,資源不足時及時報警,任意資源不足都會影響 Redis 性能
8、實例設(shè)置最大連接數(shù),防止過多客戶端連接導(dǎo)致實例負載過高,影響性能
9、單個實例內(nèi)存建議控制在 10G 以下,大實例在主從全量同步、備份時有阻塞風險
10、設(shè)置合理的 slowlog 閾值,并對其進行監(jiān)控,slowlog 過多需及時報警
11、設(shè)置合理的 repl-backlog,降低主從全量同步的概率
12、設(shè)置合理的 slave client-output-buffer-limit,避免主從復(fù)制中斷情況發(fā)生
13、推薦在從節(jié)點上備份,不影響主節(jié)點性能
14、不開啟 AOF 或開啟 AOF 配置為每秒刷盤,避免磁盤 IO 拖慢 Redis 性能
15、調(diào)整 maxmemory 時,注意主從節(jié)點的調(diào)整順序,順序錯誤會導(dǎo)致主從數(shù)據(jù)不一致
16、對實例部署監(jiān)控,采集 INFO 信息時采用長連接,避免頻繁的短連接
17、做好實例運行時監(jiān)控,重點關(guān)注 expired_keys、evicted_keys、latest_fork_usec,這些指標短時突增可能會有阻塞風險
18、掃描線上實例時,記得設(shè)置休眠時間,避免過高 OPS 產(chǎn)生性能抖動

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容