redis内存超出物理限制时,那么内存中的数据会和磁盘产生频繁的交换,这种情况会导致redis的性能严重下降,甚至不可用。所以redis提供了几种策略来让用户决定redis内存写满时,如何保证redis继续可用。策略配置属性:maxmemory-policy。
1. noeviction:永不过期策略,默认的淘汰策略。支持读,除了 del 操作,其它写命令不支持。这样redis内存写满后,基本上redis不再可用。
2. volatile-lru:淘汰对象是设置了过期时间的key,最少使用的key被优先淘汰。
3. volatile-ttl: 淘汰对象是设置了过期时间的key,比较key的剩余寿命ttl的值,ttl越小越优先被淘汰。
4. volatile-random:淘汰对象是设置了过期时间的key,淘汰的是随机选取的key。
5. allkeys-lru:淘汰对象是所有key,最少使用的key被优先淘汰。
6. allkeys-random:淘汰对象是所有key,随机选取key淘汰。
volatile-xxx的key的淘汰对象都是设置了过期时间的key, allkeys-xxx的淘汰对象都是所有key。如果只用redis做缓存,那么过期策略选择allkeys-xxx,如果想用redis做缓存还想做数据库,就选择volatile-xxx。