如何设计一个本地缓存( 三 )
提供一个傻瓜式的对外接口是很有必要的 , 对使用者来说使用此缓存不是一种负担而是一种享受;提供常用的get , put , remove , clear , getSize方法即可;
7.是否持久化
这个其实不是必须的 , 是否需要将缓存数据持久化看需求;本地缓存如ehcache是支持持久化的 , 而guava是没有持久化功能的;分布式缓存如redis是有持久化功能的 , memcached是没有持久化功能的;
8.阻塞机制
在看Mybatis源码的时候 , 二级缓存提供了一个blocking标识 , 表示当在缓存中找不到元素时 , 它设置对缓存键的锁定;这样其他线程将等待此元素被填充 , 而不是命中数据库;其实我们使用缓存的目的就是因为被缓存的数据生成比较费时 , 比如调用对外的接口 , 查询数据库 , 计算量很大的结果等等;这时候如果多个线程同时调用get方法获取的结果都为null , 每个线程都去执行一遍费时的计算 , 其实也是对资源的浪费;最好的办法是只有一个线程去执行 , 其他线程等待 , 计算一次就够了;但是此功能基本上都交给使用者来处理 , 很少有本地缓存有这种功能;
推荐阅读
- 明日方舟|明日方舟:早露皮肤的攻击动作设计得很出彩,化身成白熊的指挥员
- 小鱼人|如何在新赛季稳定上分?善于抓失误的小鱼人,值得认真练上一波
- 设计师|魔兽世界:9.1.5刚上线,就要9.2了?来看设计师爆料的更多细节
- 雷神|原神:曾经有一个强力五星角色,却因各种“流言蜚语”,擦肩而过
- 阴阳师|阴阳师SR川猿强度如何 是否值得抽卡 改变斗技环境 大佬的新玩具
- 手机游戏|梦幻西游手游:活力如何换金币 一切都已给出 就看你的选择
- 次世代|韩国战队全军覆没,斗鱼选手实力强大,一人击溃一个队
- 手机游戏|LOL手游第一个世界赛,破晓杯火热开战,DKG能紧随EDG夺冠吗?
- 华佗|三国杀:两位\奶爸\,朱治与华佗比,强度如何呢?
- 亲朋上分|《亲朋上分》266391亲朋下分亲朋上下分永劫无间崔三娘技能介绍 崔三娘如何获得更多技能