jetcache
KDoo
Javaer
展开
-
JetCache源码(四)——一些有趣特性的实现
一、自动刷新实现这里贴出的代码是添加刷新任务的方法,首先维护了一个任务队列,以taskId作为key,RefreshTask作为value。private ConcurrentHashMap<Object, RefreshTask> taskMap = new ConcurrentHashMap<>();protected void addOrUpdateRefreshTask(K key, CacheLoader<K,V> loader) { R原创 2020-09-23 12:27:28 · 824 阅读 · 0 评论 -
JetCache源码(三)——本地缓存实现
一、类结构二、AbstractEmbeddedCache定义了InnerMap和创建InnerMap的抽象方法,由LinkedHashMapCache和CaffeineCache两个子类来实现。 protected InnerMap innerMap; protected abstract InnerMap createAreaCache();在这个类中实现了一些公共方法,避免子类重复实现,公共方法会调用如innerMap.getValue(newKey),使用每个子类的独原创 2020-09-23 12:26:38 · 1353 阅读 · 0 评论 -
JetCache源码(二)——Cache类库实现
一、Cache类库基本结构二、Cache类似于集合中的List,定义了一些缓存的基本方法,如get、put。提供了方法的默认实现,使用了模板方法模式,小写方法有默认实现,大写方法由子类来实现。小写的方法返回的是数据,不过当方法返回为null时,无法断定是key不存在,已过期,还是访问缓存时出现了异常,大写GET方法提供了完整的信息。模板方法设计模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 defa原创 2020-09-23 12:25:19 · 728 阅读 · 0 评论 -
JetCache源码(一)——简介与注解实现
一.为何不用Map作为本地缓存库内存管理没有对使用的内存做限制,需要手动编写代码来控制内存,没有自动的内存管理机制。缓存过期策略没有缓存过期策略,如:LRU,LFU,FIFO容量规划没有容量限制Map是否是线程安全的可能会出现并发控制问题持久化服务器重启,Map中数据消失多实例数据同步及一致性Map是在服务器的一个实例中的,部署多个实例时,Map中数据会产生不一致的情况二.本地缓存相较于第三方缓存有什么优势不经过网络传输,响应速度快其中本地缓存无法进行持久化,以及保证多原创 2020-09-23 12:19:38 · 1982 阅读 · 0 评论