作為內存數據庫,為了防止redis占用過多的內存對其他的應用程序造成影響,可以在redis.conf文件中通過設置maxmemory選項對redis所能夠使用的最大內存做限制,並通過maxmemory_policy內存淘汰策略對redis占用內存超過maxmemory之后的行為做限制。
一、設置 maxmemory
a、通過redis-cli命令設置:config get maxmemory和 config set maxmemory 100MB;
b、修改redis配置文件redis.conf: maxmemory 100MB
二、maxmemory-policy淘汰策略(默認:maxmemory-policy noeviction)
當 Redis 內存使用達到 maxmemory
時,需要選擇設置好的 maxmemory-policy
進行對數據進行淘汰機制。
1.volatile-lru(least recently used):最近最少使用算法,從設置了過期時間的鍵key中選擇空轉時間最長的鍵值對清除掉;
2.volatile-lfu(least frequently used):最近最不經常使用算法,從設置了過期時間的鍵中選擇某段時間之內使用頻次最小的鍵值對清除掉;
3.volatile-ttl:從設置了過期時間的鍵中選擇過期時間最早的鍵值對清除;
4.volatile-random:從設置了過期時間的鍵中,隨機選擇鍵進行清除;
5.allkeys-lru:最近最少使用算法,從所有的鍵中選擇空轉時間最長的鍵值對清除;
6.allkeys-lfu:最近最不經常使用算法,從所有的鍵中選擇某段時間之內使用頻次最少的鍵值對清除;
7.allkeys-random:所有的鍵中,隨機選擇鍵進行刪除;
8.noeviction:不做任何的清理工作,在redis的內存超過限制之后,所有的寫入操作都會返回錯誤;但是讀操作都能正常的進行;
前綴為volatile-和allkeys-的區別在於二者選擇要清除的鍵時的字典不同,volatile-前綴的策略代表從redisDb中的expire字典中選擇鍵進行清除;allkeys-開頭的策略代表從dict字典中選擇鍵進行清除。 maxmemory-policy設置方式同maxmemory一樣。