缓存失效策略

Posted KeepLearningYZZ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存失效策略相关的知识,希望对你有一定的参考价值。

介绍两种常用缓存框架的失效策略。


一:Ehcache

Ehcache是Hibernate默认的二级缓存实现,首先设置内存中缓存最大记录数,当超过最大记录数时,提供3种缓存失效策略清除内存记录。

1、FIFO - First In First Out,这个好理解,依序清除早先放进来的缓存记录

2、LFU - Least Frequently Used最少使用,这个也好理解,给每条记录维护访问计数,清除计数最少的记录

3、LRU - Least Recently Used最近最少使用,默认失效策略,是在LFU上的改进,增加时间维度清除最近一段时间内最少使用的记录,防止某些数据前期频繁访问,后期不再访问,但由于计数高占据内存问题


二:Guava Cache(Caffine)

Guava Cache(Caffine)是Google开发的缓存框架,提供三种方式的失效策略。

1、基于大小

这个和Ehcache类似,只不过是基于Window TinyLfu策略,具体没研究,大概就是针对LRU与LFU优化的策略算法


2、基于时间

记录放到缓存后一段时间后失效,或最后一次访问后一段时间后失效。这个策略也挺有用,我最近项目就用到了


3、基于引用

提供两种,弱引用 - 每次gc时就清除掉没有对象引用的缓存记录,软引用 - 内存不足时清除缓存记录,这个也挺有用,可以防止缓存撑爆内存影响了自身或其他进程

以上是关于缓存失效策略的主要内容,如果未能解决你的问题,请参考以下文章

Redis缓存失效策略

缓存失效策略(FIFO,LRU,LFU)

缓存失效

Redis篇:持久化淘汰策略,缓存失效策略

Redis篇:持久化淘汰策略,缓存失效策略

在一个中等复杂的用例中,策略处理和使订阅的缓存数据失效