高薪Offer收割机之Redis数据过期和淘汰策略

redis服务器的内存大小是有限的,如何保证数据不会占满整个内存,这就需要数据过期和数据淘汰策略。

什么是数据过期策略?

我们可以给redis中的数据设置有效时间,当redis中的数据过期以后如何删除redis中的数据是立即删除吗?

答案是否,在redis中有两种数据过期策略:

第一种是惰性删除

例如设置一个key的过期时间以后,不去管它,当需要该key时查询该key是否过期,如果过期则删除,没有过期则返回它对应的值。

惰性删除策略的好处是:只会在需要用到该key时才会去检查是否过期,对于很多一直不会使用的key就不需要浪费cpu和时间去进行过期检查了。

惰性删除策略的缺点是:如果一个key已经过期但是一直没有使用那么该key就会一直存在于内存中,内存一直得不到释放。

第二种是定期删除

每隔一段时间我们就从一定数量的数据库中取出一定数量的随机key进行检查,并删除其中的过期key。

定期删除有两种模式:

Slow模式:

这种模式是定时任务,执行频率为10hz,每次不超过25ms,也就是每秒钟执行10次,每次不超过25毫秒。我们可以在redis的配置文件redis.conf中修改该配置。

Fast模式

这种模式执行频率不固定,但是两次之间的间隔不低于2ms,每次执行不超过1ms。


定期删除模式可以通过设置执行频率和执行时长来减少删除操作对CPU的影响,也能有效的释放过期key的内存空间,但是确定它的执行频率和时长本身是一件比较困难的事。

你可能感兴趣的:(高薪Offer收割机,java,redis,缓存)