如果redis配置了maxmemory和maxmemory-policy策略,則當redis內存數據達到maxmemory時,會根據maxmemory-policy配置來淘汰內存數據,以避免OOM。
redis提供了以下6種淘汰策略:
1,noeviction:不執行任何淘汰策略,當達到內存限制的時候客戶端執行命令會報錯。
2,allkeys-lru:從所有數據范圍內查找到最近最少使用的數據進行淘汰,直到有足夠的內存來存放新數據。
3,volatile-lru:從所有的最近最少訪問數據范圍內查找設置到過期時間的數據進行淘汰,如果查找不到數據,則回退到noeviction。
4,allkeys-random:從所有數據范圍內隨機選擇key進行刪除。
5,volatile-random:從設置了過期時間的數據范圍內隨機選擇key進行刪除。
6,volatile-ttl:從設置了過期時間的數據范圍內優先選擇設置了TTL的key進行刪除。