AutoLoadCache 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
AutoLoadCache 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
AutoLoadCache 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
AutoLoadCache 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
AutoLoadCache 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发缓存系统
开源组织
地区 国产
提 交 者 qiujiayu
适用人群 未知
收录时间 2015-12-02

软件简介

现在使用的缓存技术很多,比如Redis、 Memcache 、 EhCache等,甚至还有使用ConcurrentHashMap 或 HashTable 来实现缓存。但在缓存的使用上,每个人都有自己的实现方式,大部分是直接与业务代码绑定,随着业务的变化,要更换缓存方案时,非常麻烦。接下来我们就使用AOP + Annotation 来解决这个问题,同时使用自动加载机制 来实现数据“常驻内存”。

设计思想及原理

在infoq 发表的文章《面对缓存,有哪些问题需要思考?》

《再谈缓存的穿透、数据一致性和最终一致性问题》

使用方法

注解(Annotation)说明

分布式锁支持

表达式的应用

缓存删除

Magic模式

注意事项

与Spring Cache的区别

最佳实战

autoload-cache-spring-boot-starter 推荐使用这个,test目录中也有可运行例子。

源码阅读

已经实现基于aspectj 的AOP,代码在com.jarvis.cache.aop.aspectj.AspectjAopInterceptor。想通过阅读代码了解详细细节,可以以此为入口。

注意:有些类get, set, hashCode(), toString() equals()等方法是使用 lombok 自动生成的,所以使用Eclipse 和 IntelliJ IDEA 时,需要先安装lombok。

更新日志

QQ群:429274886

展开阅读全文

代码

评论 (10)

加载中
打分: 力荐
用着看看
2018/01/24 13:35
回复
举报
支持多语言吗?
2017/07/04 09:18
回复
举报
打分: 力荐
mark
2017/05/05 10:30
回复
举报
看到前面的评论,感叹真是有人连文章内容都不看就敢评论!悲哀!
2017/03/28 23:35
回复
举报
和spring cache相比有啥异同呢?感觉是重复造了轮子
2017/03/28 15:39
回复
举报
qiujiayu软件作者
打分: 力荐
能很好将缓存与业务逻辑进行解耦,异步刷新缓存及“拿来主义”机制非常适合高并发环境下使用。
2017/03/28 13:44
回复
举报
看起来不错 #AutoLoadCache#
2016/01/19 20:57
回复
举报
spring 本来就支持吧。。。 #AutoLoadCache#
2016/01/27 19:05
回复
举报
收藏学习 #AutoLoadCache#
2016/04/27 23:58
回复
举报
好东西 #AutoLoadCache#
2016/05/11 18:55
回复
举报
更多评论
发表于开发技能专区
2020/01/13 11:03

AutoLoadCache 7.0.8 发布

utoLoadCache 是基于 AOP+Annotation 等技术实现的高效的缓存管理解决方案,实现缓存与业务逻辑的解耦,并增加异步刷新及“拿来主义机制”,以适应高并发环境下的使用。为了更好管理缓存增加了 Magic 模式。 此次更新主要解决以下问题: 1. 数据加载抛出异常时,续租功能失效的问题 2. 使用FastjsonSerializer深拷贝时,...

4
8
发表于AI & 大数据专区
2019/11/27 14:57

AutoLoadCache 7.0.7 发布

AutoLoadCache 是基于 AOP+Annotation 等技术实现的高效的缓存管理解决方案,实现缓存与业务逻辑的解耦,并增加异步刷新及“拿来主义机制”,以适应高并发环境下的使用。为了更好管理缓存增加了 Magic 模式。 此次更新主要解决了 Magic 模式下缓存穿透问题。 详情可见:https://gitee.com/qiujiayu/AutoLoadCache...

0
6
发表于软件架构专区
2019/07/16 11:34

AutoLoadCache 7.0.4 发布,完善 Magic 模式

7.0.4 版本修改日志: 1. 修复了Magic模式下数据不正确问题; 2. 支持无参函数下使用Magic模式; 3. 对Magic模式下的缓存删除功能进行重构,不仅支持基于参数进行批量删除缓存,也支持通过返回进行批量删除缓存; 下面是对Magic模式的详细说明: 为了降低缓存数据与数据源数据不一致,也是为了更加方便更新、删除缓存,通...

0
7
发表于AI & 大数据专区
2018/12/12 22:28

AutoLoadCache 7.0.1 大版本发布,增加 Magic 模式

6.9.6版本增加kryo序列化支持; 7.0.0 改用Redis Pipeline优化; 7.0.1 增加magic模式、优化分布式锁、KryoSerializer可增加自定义类注册器; autoload-cache-spring-boot-starter 为了支持Spring boot 1.x和2.x,也使用两版本进行分别管理:6.x 继续支持Spring boot1.x; 从7.x开始支持Spring boot2.x; 下面重点介绍新增...

0
5
发表了资讯
2017/07/19 22:42

AutoLoadCache 6.4发布,增加获取CacheOpType的方法

AutoLoadCache增加CacheOpType.LOAD操作类型,只是从数据源加载数据,不从缓存中获取数据,也不写入缓存。 原来只能通过@Cache中的opType来获取CacheOpType,现在增加了通过CacheHelper获取,及通过拦截到的方法中的参数获取,使用更加灵活,能满足更多用户的需求。 删除了CacheHelper 中setCacheAble()等功能,使用Cac...

1
5
发表了资讯
2017/07/05 13:36

AutoLoadCache 6.2 增加 autoload-cache-spring-boot-starter

AutoLoadCache 6.2 版本已发布,更新如下: 6.2版本更新日志 CacheHandler 不再继承ICacheManager接口,方便实现spring boot starter自动注入; autoload-cache-spring-boot-starter 1.0.0发布。 6.1版本更新日志 ChangeListener.update增加newVal参数 @Cache中增加argumentsDeepcloneEnable,更方便控制是否对参数进行深...

1
9
发表了资讯
2017/06/02 17:54

AutoLoadCache 6.0 增加二级缓存支持

AutoLoadCache 6.0 已经发布。AutoLoadCache 是基于AOP+Annotation等技术实现的高效的缓存管理解决方案,实现缓存与业务逻辑的解耦,并增加异步刷新及“拿来主义机制”,以适应高并发环境下的使用。新版本更新内容: 增加二级缓存的支持(即本地缓存和分布式缓存)。实现类在:com.jarvis.cache.ComboCacheManager。增加...

1
15
发表了资讯
2017/05/05 10:02

AutoLoadCache 5.4 增加分布式锁及事务下删除缓存处理

AutoLoadCache 5.4 发布了。新版本主要增加了两个功能: 增加@CacheDeleteTransactional 注解,用于处理事务下,事务处理完后才删除缓存,避免因事务失败造成缓存中的数据不一致问题。 增加分布式锁支持

1
10
发表了资讯
2017/04/18 19:53

AutoLoadCache 5.3 发布,增加重试机制

AutoLoadCache 5.3 发布,优化数据加载功能: 之前版本,数据加载时(DataLoader类中loadData()方法),处于等待状态的线程,如果超时未获取数据时,直接去数据层再取一次。但是这里存在一个问题:如果请求很多,那请求都会穿透到数据层,可能会造成系统压力过大。 优化后的方案是,会重试调用loadData()方法,而loadData方...

0
8
发表了资讯
2017/04/13 13:20

AutoLoadCache 5.2 发布

5.2 版本只是优化一些小细节上的东西: 更新fastjson,因为 fastjson 1.2.28之前的版本有安全漏洞,所以需要及时更新; 增加一些debug信息; 当缓存时行设置为小于0的值时,不进行缓存。 最后附上和网友沟通中遇到的“空”处理问题: 非常多人都有这样的误区,认为数据层返回数据如果是“空”时(这里的空指的是:null或...

0
15
发表了资讯
2017/03/28 14:15

AutoLoadCache 5.1 进一步提升兼容性

5.1 版本更新日志: 为了更好的兼容logback 和 log4j,改用slf4j 记日志 @CacheDeleteKey 的value 改成values,实际工作中能减少编写的代码量; 把 JedisCluster 的初始化从JedisClusterCacheManager中移除,改为从外部注入,利于灵活的整合; 增加 CacheHelper,通过它,可以打开和关闭缓存功能; JedisClusterCacheMan...

5
15
发表了资讯
2016/11/15 09:39

AutoLoadCache 4.17,支持 JedisCluster

AutoLoadCache 4.17 发布了,增加对 JedisCluster 的支持。 4.17 修改说明 增加对JedisCluster的支持。 下载地址: https://github.com/qiujiayu/AutoLoadCache/releases

0
11
发表了资讯
2016/07/13 00:00

AutoLoadCache 4.14 发布,增加 OGNL 表达式引擎支持

AutoLoadCache 4.14 发布,增加 OGNL 表达式引擎支持。 4.14 修改说明 使用Lambok来缩减代码,Lambok能帮助我们减少写get,set,hashCode,toString等没有技术含量的工作,而且在修改增加或删除java bean中的属性时,不需要去改hashCode,toString等方法,减少因为忘记修改而造成的错误。 增加OGNL表达式引擎支持,经过测试它...

11
7
发表了资讯
2016/07/01 00:00

AutoLoadCache 4.12 发布,优化 FastJson 深度复制功能

AutoLoadCache 4.12 发布了,AutoLoadCache 是基于AOP+Annotation等技术实现的高效的缓存管理解决方案,实现缓存与业务逻辑的解耦,并增加异步刷新及“拿来主义机制”,以适应高并发环境下的使用。 修改日志: 1、fastjson deepClone 数组中有Map或Collection时,转换失败的问题 2、Fastjson深度复制优化:针对深度复制M...

4
26
发表了资讯
2016/06/21 00:00

AutoLoadCache 4.11 发布,增加刷新缓存及续租缓存功能

AutoLoadCache 4.11 发布了,修改说明: 增加刷新缓存数据功能,如果不使用自动加载,则在缓存即将过期时(必须在这个期间有用户请求数据),开启线程进行异步刷新数据,可以减少用户的等待,避免因缓存失效失效造成系统压力过大; 在刷新缓存和自动加载缓存中,如果从数据层加载数据时,发生异常,则使用旧数据进行续租...

4
26
发表了资讯
2016/06/15 00:00

AutoLoadCache 4.10 发布,增加数据压缩支持

AutoLoadCache 是一个高效的缓存管理解决方案,而且实现了自动加载(或叫预加载)和“拿来主义”机制,能非常巧妙地解决系统的性能及并发问题。 此版本增加了以下两个功能: 增加使用fastjson进行序列化与返序列化功能,实现类:com.jarvis.cache.serializer.FastjsonSerializer。使用fastjson时需要注意:由于Json中不保...

1
27
发表了资讯
2016/06/03 00:00

AutoLoadCache 4.8 发布,实现了表达式的可扩展性

AutoLoadCache 是一个高效的缓存管理解决方案,而且实现了自动加载(或叫预加载)和“拿来主义”机制,能非常巧妙地解决系统的性能及并发问题。 新版本优化JavaScriptParser 中的代码,并根据JDK版本,使用javascript 还是nashorn 引擎。

1
22
发表了资讯
2016/05/11 00:00

AutoLoadCache 4.4 发布,完善使用 Map 本地缓存

AutoLoadCache 是一个高效的缓存管理解决方案,而且实现了自动加载(或叫预加载)和“拿来主义”机制,能非常巧妙地解决系统的性能及并发问题。源码:github 从4.0版本开始支持AOP的扩展,并通过网友Rekoe 完成了nutz的扩展:AutoLoadCache-nutz 从4.3版本开始,使用 ConcurrentHashMap 做本地缓存时,可将缓存中的内容定...

3
59
发表了资讯
2016/04/28 00:00

AutoLoadCache 4.0 发布,实现 AOP 的可扩展

AutoLoadCache 是一个高效的缓存管理解决方案,而且实现了自动加载(或叫预加载)和“拿来主义”机制,能非常巧妙地解决系统的性能及并发问题。 受网友Rekoe 将AutoLoadCache 和 nutz整合的启发(https://github.com/Rekoe/AutoLoadCache),将AutoLoadCache 中的AOP相关功能进行抽取,以达到可扩展 把AOP拦截方法从Abstr...

7
33
发表了资讯
2016/04/20 00:00

AutoLoadCache 3.7 发布,对一些细节进行优化

AutoLoadCache 3.7 发布了,AutoLoadCache 是一个高效的缓存管理解决方案,而且实现了自动加载(或叫预加载)和“拿来主义”机制,能非常巧妙地解决系统的性能及并发问题。 更新日志: 3.7 细节优化: 调整 写缓存(writeCache)代码结构。 将ShardedCachePointCut中hashExpire默认值设置为-1; 解析SpEL表达式时,增加判...

7
23
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于开发技能专区
2015/10/27 12:39

autoload-cache-2.1 发布

优化HessianSerializer,提升性能,并将HessianSerializer作为默认的序列化和反序列化工具。

0
2
发表于AI & 大数据专区
2015/03/11 14:53

autoload-cache-1.0 发布

autoload-cache(自动加载缓存框架),经过最近一段时间的优化和重构,已经发布1.0版本。在代码结构上有比较大的调整,使得更加易用,也能满足更多的需求。

0
2
发表于AI & 大数据专区
2015/06/25 10:55

autoload-cache-1.7 发布

1:使用@CacheDeleteKey 定义删除缓存Key的规则; 2:@Cache中增加opType属性,支持把执行结果直接更新到缓存中,不从缓存取数据。 3:使用Lua脚本批量删除Redis缓存。 详细的使用,可以参考:https://github.com/qiujiayu/cache-example 中的UserDAO。...

2
0
发表于开发技能专区
2020/11/16 19:43

go语言生态还是不行

最近学了go语言,本来想用go来写个网站,但是发现go的生态还是不行,最终我还是选择用Java来开发。 go语言缺少像java的spring data cache、jetcache、 AutoLoadCache 这样用注解就可以轻松使用的缓存框架。这样的...

0
0
发表于软件架构专区
2015/02/28 17:35

自动加载缓存框架

现在使用的缓存技术很多,比如Redis、 Memcache、EhCache等,甚至还有使用ConcurrentHashMap 或 HashTable 来实现缓存。但在缓存的使用上,每个人都有自己的实现方式,大部分是直接与业务代码绑定,随着业务的变化,要更换缓存方案时,非常麻烦。接下来我们就使用AOP + Annotation 来解决这个问题,同时使用自动加载机制...

16
237
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2016/01/24 14:08

关于缓存list的查询与get存储id,merge删除缓存中的疑问

@qiujiayu 你好,想跟你请教个问题: 1 请问一下 如果是 update更新呢?我get的时候用id进行缓存,但是我update的时候可能不存在id 例如:update table set name='张三' where titile='张三标题' 此是要刷新get的方法 难道要把该get的所有缓存全部删除?目前我使用的是默认自动生成的key 2 如果是dao继承父类的get和mer...

2
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
10 评论
392 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部