key名設計
- 可讀性和可管理性,以業務名或數據庫名爲前綴防止key衝突,用冒號分隔。例子業務名:表名:id,比如ugc:video:1
- 簡潔性,保證語義的情況下,儘量縮減key的長度
- 不要包含特殊字符,空格,換行,單雙引號
value的設計
- string類型控制在10kb,hash,list,set,zset元素個數不要超過5000
big key 的發現:
redis-cli --bigkeys
debug object key
big key 的刪除 :
scan 遊標遍歷刪除
命令的優化
客戶端的優化
- 避免多個應用使用同一個redis實例
連接池參數優化
maxIdl 接近maxTotal即可
合理計算連接數
內存優化
輸出緩衝區的配置
普通客戶端緩衝區:
默認 client-output-buffer-limit normal 0 0 0
默認沒有限制客戶端緩衝
防止大的命令或者monitor
slave客戶端緩衝區:
默認 client-output-buffer-limit slave 256mb 64mb 60
阻塞:主從延遲較高,或者從節點過多
pubsub客戶端緩衝區:
默認 client-output-buffer-limit slave 32mb 8mb 60
阻塞:生產大於消費
複製緩衝區
AOF緩衝區
內存管理
設置最大內存,超過後由maxmemory-policy控制。
內存回收:惰性刪除,定時刪除。