redis 過期策略有兩種:定期刪除和惰性刪除。定期刪除在后臺主動掃描數據庫,立即刪除過期的鍵值對,節省內存空間,但可能影響性能。惰性刪除只有在客戶端訪問已過期的鍵值對時才會刪除,性能開銷低,但過期的鍵值對可能繼續占用內存空間。應用程序應根據需求選擇策略,如需要立即刪除或性能優先。優化措施包括使用短 ttl 值、redis cluster 分布數據、監控內存使用情況。
Redis 過期策略設置
1. 概述
Redis 過期策略定義了當鍵值對過期后 Redis 如何處理它們。有兩種主要策略:“定期刪除”和“惰性刪除”。
2. 定期刪除
使用 expires 命令設置鍵值對的生存時間(TTL)。
Redis 在后臺定期掃描數據庫,刪除過期的鍵值對。
優點: 確保所有過期的鍵值對及時刪除,節省內存空間。
缺點: 掃描過程可能影響 Redis 性能,尤其是當數據庫很大時。
3. 惰性刪除
當客戶端嘗試訪問已過期的鍵值對時,Redis 才會刪除它。
此策略不會主動掃描數據庫,因此不會影響 Redis 性能。
優點: 性能開銷低。
缺點: 過期的鍵值對可能在一段時間內繼續占用內存空間。
4. 設置方法
4.1 定期刪除
EXPIRE mykey 60 # 設置 mykey 的 TTL 為 60 秒
登錄后復制
4.2 惰性刪除
Redis 默認使用惰性刪除策略。可使用以下命令禁用惰性刪除,啟用定期刪除:
config set lazyfree-lazy-eviction no
登錄后復制
5. 選擇策略
選擇哪種策略取決于應用程序的特定需求:
如果需要立即刪除過期的鍵值對,則選擇定期刪除。
如果性能是優先考慮因素,則選擇惰性刪除。
6. 優化
使用短 TTL 值以減少過期的鍵值對數量。
考慮使用 Redis Cluster,它可以將數據分布在多個節點上,從而減少單個節點的掃描負擔。
定期監視 Redis 內存使用情況,并在需要時調整 TTL 值和刪除策略。