如何设计一个本地缓存( 五 )

3.清除策略

配合对象上限之后使用 , 场景的清除策略如:LRU(最近最少使用)、FIFO(先进先出)、LFU(最近最不常用)、SOFT(软引用)、WEAK(弱引用);
LRU:Least Recently Used的缩写最近最少使用 , 移除最长时间不被使用的对象;常见的使用LinkedHashMap来实现 , 也是很多本地缓存默认使用的策略;
FIFO:先进先出 , 按对象进入缓存的顺序来移除它们;常见使用队列Queue来实现;
LFU:Least Frequently Used的缩写大概也是最近最少使用的意思 , 和LRU有点像;区别点在LRU的淘汰规则是基于访问时间 , 而LFU是基于访问次数的;可以通过HashMap并且记录访问次数来实现;
SOFT:软引用基于垃圾回收器状态和软引用规则移除对象;常见使用SoftReference来实现;
WEAK:弱引用更积极地基于垃圾收集器状态和弱引用规则移除对象;常见使用WeakReference来实现;

4.过期时间

设置过期时间 , 让缓存数据在指定时间过后自动删除;常见的过期数据删除策略有两种方式:被动删除和主动删除;
被动删除:每次进行get/put操作的时候都会检查一下当前key是否已经过期 , 如果过期则删除 , 类似如下代码:

推荐阅读