Cache 缓存实现类
拿来当Redis用就行了,不过Hutool 缓存库主要是为了实现本地缓存;用在数据量不大,短期频繁访问的数据。
- FIFO(先进先出)缓存:按照数据进入缓存的顺序,最先进入缓存的数据会被最先移除。适用于简单的缓存场景,不考虑数据的访问频率。
- LFU(最不经常使用)缓存:根据数据的访问频率,最不经常使用的数据会被移除。适用于对缓存的访问模式有较好了解的场景。
- LRU(使用最近最少使用):LRU 缓存是一种缓存替换策略,当缓存达到其最大容量时,它会移除最近最少使用的条目,以便为新条目腾出空间。
- MRU(最近最常使用)缓存:根据数据的访问模式,最近最常使用的数据会被保留。适用于对缓存的访问模式有较好了解的场景。
- LFU-K 缓存:LFU-K 是 LFU 缓存的改进版本,它不仅考虑数据的访问频率,还考虑了最近的访问时间。这可以更准确地判断哪些数据应该被保留。
- ARC(Adaptive Replacement Cache)缓存:ARC 缓存结合了 LRU 和 LFU 的思想,根据最近的访问模式和频率自适应地调整缓存策略。适用于高性能和复杂的缓存场景。
- 二级缓存:同时使用多种不同类型的缓存,如本地内存缓存和分布式缓存,以提供更灵活和高效的缓存策略。
FIFOCache
先进先出,队列。主打一个公平公正。
因此先进去的先存储,然后缓存达到容量限制,最先进去的就被最先移除。
java
import cn.hutool.cache.Cache;
import cn.hutool.cache.impl.FIFOCache;
private final Cache<, > cache = new FIFOCache<>(10);
cache.put();
cache.get();
cache.remove();
LRUCache
最近最少使用。(最近的访问时间)
当缓存达到其容量限制时,LRU 缓存会优先移除最近最少访问的条目
java
import cn.hutool.cache.Cache;
import cn.hutool.cache.impl.LRUCache;
private final Cache<, > cache = new LRUCache<>(10);
cache.put();
cache.get();
cache.remove();
LFUCache
最不经常使用。
与LRU相比,它更看重访问频率。当缓存达到其容量限制时,LFU 缓存会优先移除访问频率最低的数据。
java
import cn.hutool.cache.Cache;
import cn.hutool.cache.impl.LFUCache;
private final Cache<, > cache = new LFUCache<>(10);
cache.put();
cache.get();
cache.remove();