當 Redis 中存在大量 key 在同一時間點集中過期時,可能會導致以下問題:
- 請求延遲增加:Redis 在處理過期 key 時需要消耗 CPU 資源,如果過期 key 數量龐大,會導致 Redis 實例的 CPU 占用率升高,進而影響其他請求的處理速度,造成延遲增加。
- 內存占用過高:過期的 key 雖然已經失效,但在 Redis 真正刪除它們之前,仍然會占用內存空間。如果過期 key 沒有及時清理,可能會導致內存占用過高,甚至引發內存溢出。
為了避免這些問題,可以采取以下方案:
- 盡量避免 key 集中過期:在設置鍵的過期時間時盡量隨機一點。
- 開啟 lazy free 機制:修改
redis.conf
配置文件,將lazyfree-lazy-expire
參數設置為yes
,即可開啟 lazy free 機制。開啟 lazy free 機制后,Redis 會在后臺異步刪除過期的 key,不會阻塞主線程的運行,從而降低對 Redis 性能的影響。