一、合理設置Redis內存大小
Redis的內存設置需結合物理機資源與業務場景,核心原則是避免內存溢出同時保留系統冗余。
config get maxmemory(返回字節值);查看實際內存使用:info memory(used_memory_human字段)。redis.conf文件,找到maxmemory參數(如maxmemory 1073741824表示1GB);臨時修改(重啟失效):通過命令config set maxmemory 1073741824。二、配置內存淘汰策略
當Redis內存達到maxmemory限制時,需通過淘汰策略釋放空間,避免寫入報錯(OOM)。常見策略及適用場景:
OOM command not allowed)。僅適用于數據絕對不能丟失的場景(如實時交易系統),但需嚴格監控內存使用。allkeys-lfu:淘汰最不經常使用(LFU)的key,適合長期緩存但訪問頻率差異大的場景(如歷史數據查詢);allkeys-random/volatile-random:隨機淘汰key,實現簡單,但命中率較低,適用于對數據一致性要求低的場景。allkeys-lru或volatile-lru;volatile-lru或volatile-ttl(淘汰即將過期的key);noeviction(除非數據絕對不能丟失)。三、優化內存使用的額外措施
SCAN命令替代KEYS命令避免遍歷大Key。user:1:{name: "張三", age: 25}代替user:1:name、user:1:age;tag:news:{科技, 體育, 娛樂}代替多個tag:news:1、tag:news:2。jemalloc(Redis默認內存分配器)自動壓縮內存,減少碎片率??赏ㄟ^config set activedefrag yes開啟主動碎片整理(需Redis 4.0+)。INFO memory命令監控used_memory(已用內存)、mem_fragmentation_ratio(內存碎片率,理想值為1.0-1.5)等指標;設置告警閾值(如內存使用率達80%時觸發告警),及時擴容或優化。