如何设计一个本地缓存( 五 )
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是否已经过期 , 如果过期则删除 , 类似如下代码:
推荐阅读
- 明日方舟|明日方舟:早露皮肤的攻击动作设计得很出彩,化身成白熊的指挥员
- 小鱼人|如何在新赛季稳定上分?善于抓失误的小鱼人,值得认真练上一波
- 设计师|魔兽世界:9.1.5刚上线,就要9.2了?来看设计师爆料的更多细节
- 雷神|原神:曾经有一个强力五星角色,却因各种“流言蜚语”,擦肩而过
- 阴阳师|阴阳师SR川猿强度如何 是否值得抽卡 改变斗技环境 大佬的新玩具
- 手机游戏|梦幻西游手游:活力如何换金币 一切都已给出 就看你的选择
- 次世代|韩国战队全军覆没,斗鱼选手实力强大,一人击溃一个队
- 手机游戏|LOL手游第一个世界赛,破晓杯火热开战,DKG能紧随EDG夺冠吗?
- 华佗|三国杀:两位\奶爸\,朱治与华佗比,强度如何呢?
- 亲朋上分|《亲朋上分》266391亲朋下分亲朋上下分永劫无间崔三娘技能介绍 崔三娘如何获得更多技能