阿里內部強制執行的Redis規範,違者績效直接3.25

Redis規範 一:鍵值設計 1.key 名設計 (1)可讀性和可管理性 以業務名(或數據庫名)爲前綴(防止key衝突),用冒號分隔,好比業務名:表名:idjava

(2)簡潔性 保證語義的前提下,控制key的長度,當key較多時,內存佔用也不容忽視,例如:mysql

不要包含特殊字符

    反例:包含空格、換行、單雙引號以及其餘轉義字符
複製代碼

2.value設計 (1)拒絕 bigkey(防止網卡流量、慢查詢)redis

(2)string類型控制在10KB之內,hash、list、set、zset元素個數不要超過5000。

(3)非字符串的bigkey,不要使用del刪除,使用hscan、sscan、zscan方式漸進式刪除,同時要注意防止bigkey過時時間自動刪除問題(例如一個200萬的zset設置1小時過時,會觸發del操做,形成阻塞,並且該操做不會不出如今慢查詢中(latency可查)),查找方法和刪除方法

(4)選擇適合的數據類型。例如:實體類型(要合理控制和使用數據結構內存編碼優化配置,例如ziplist,但也要注意節省內存和性能之間的平衡)

(5)控制key的生命週期,redis不是垃圾桶,建議使用expire設置過時時間(條件容許能夠打散過時時間,防止集中過時),不過時的數據重點關注 idletime。
複製代碼

二.命令使用sql

  1. O(N)命令關注N的數量 例如hgetall、lrange、smembers、zrange、sinter等並不是不能使用,可是須要明確N的值。有遍歷的需求能夠使用hscan、sscan、zscan代替。數據庫

  2. 禁用命令 禁止線上使用keys、flushall、flushdb等,經過redis的rename機制禁掉命令,或者使用scan的方式漸進式處理。數據結構

其餘 Redis 使用規範可參考運維文檔:架構

附:大廠內部Redis使用規範運維

最後附上筆者建立的一個java技術交流羣,歡迎你們進羣交流java相關的技術,羣主會不定時發紅包,組織抽獎,獎品是下面幾本書之一:分佈式

從paxos到zookeeper分佈式一致性原理與實踐 做者:倪超源碼分析

Redis設計與實現 做者:黃建宏

kafka源碼分析

分佈式系統架構設計與實現

高性能mysql

Innodb引擎原理分析

還有幾本,篇幅限制就不一一列舉了

相關文章
相關標籤/搜索