-
[武汉|结业弟子]JAVA-李伟明0
可以使用一个缓存管理框架 AutoLoadCache
https://github.com/qiujiayu/AutoLoadCache
借鉴 Spring cache 的思想使用 AOP + Annotation 等技术实现缓存与业务逻辑的解耦。
AutoloadCache 在 AOP 拦截到请求后,大概的流程如下:
1 . 获取到拦截方法的 @Cache 注解,并生成缓存 key;
2 . 通过缓存 key,去缓存中获取数据;
3 . 如果缓存命中,执行如下流程:
- 如果需要自动加载,则把相关信息保存到自动加载队列中;
- 否则判断缓存是否即将过期,如果即将过期,则会发起异步刷新;
- 最后把数据返回给用户。
4 . 如果缓存没有命中,执行如下流程:
- 选举出一个 leader 回到数据源中去加载数据,加载到数据后通知其它请求从内存中获取数据(拿来主义机制);
- leader 负责把数据写入缓存;如果需要自动加载,则把相关信息保存到自动加载队列中;
- 最后把数据返回给用户。
例如这个样子
编辑于2018-07-20
- 去第 页