java缓存淘汰策略,Redis 缓存淘汰机制

Redis 缓存淘汰机制作者:曾 彬

redis我们设置key默认是可以不设置缓存时间的,那么如果大量key堆积在内存中,导致内存耗尽,redis就会走内存淘汰机制:

我们可以通过redis.conf中的maxmemory来设置阀值:

#设置内存阀值

maxmemory 1048576B

maxmemory 100KB

maxmemory 100MB

maxmemory 1GB

#设置淘汰策略

maxmemory-policy noeviction

或者也可以动态设置内存策略,无需重启redis

config set maxmemory 100000

config set maxmemory-policy noeviction

下面介绍几种内存淘汰的策略:

volatile-lru(过期热点访问)

从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。redis并不是保证取得所有数据集中最近最少使用的键值对,而只是随机挑选的几个键值对中的, 当内存达到限制的时候无法写入非过期时间的数据集。

volatile-ttl(干掉快死的)

从已设置过期时间的数据集中挑选将要过期的数据淘汰。redis 并不是保证取得所有数据集中最近将要过期的键值对,而只是随机挑选的几个键值对中的, 当内存达到限制的时候无法写入非过期时间的数据集。

volatile-random(过期随机抽)

从已设置过期时间的数据集中任意选择数据淘汰。当内存达到限制的时候无法写入非过期时间的数据集。

allkeys-lru(全值热点访问)

从数据集中挑选最近最少使用的数据淘汰。当内存达到限制的时候,对所有数据集挑选最近最少使用的数据淘汰,可写入新的数据集。

allkeys-random(全值随机抽)

从数据集中任意选择数据淘汰,当内存达到限制的时候,对所有数据集挑选随机淘汰,可写入新的数据集。

no-enviction(不删除)

当内存达到限制的时候,不淘汰任何数据,不可写入任何数据集,所有引起申请内存的命令会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值