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。
当Redis内存达到上限时,其性能会显著下降。为解决这一问题,Redis提供了多种maxmemory-policy策略,如noeviction(默认,不淘汰任何数据)、volatile-lru(淘汰有过期时间且使用最少的key)、volatile-ttl(淘汰剩余生存时间短的key)、volatile-random(随机淘汰有过期时间的key)、allkeys-lru(淘汰使用最少的key)和allkeys-random(随机淘汰key)。选择策略应根据Redis的使用场景,如仅作缓存则推荐allkeys-xxx,兼顾缓存和数据库则选volatile-xxx。
1274

被折叠的 条评论
为什么被折叠?



