热门排行
简介
J2Cache是一款OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的 Ehcache 缓存数据丢失。
之前发了2.3.14 版本,只是根据用户反馈的异常来增加了默认构造函数,而 setter 方法的缺失产生的问题更为严重,它不会报错,而是直接让功能失效!现在再次紧急发布修复版本 2.3.15。
<dependency>
<groupId>net.oschina.j2cache</groupId>
<artifactId>j2cache-core</artifactId>
<version>2.3.15-release</version>
</dependency>
新版本包含的改进如下:
Spring Boot 模块关于 redis 数据读写的 bug 修复
处理了一些代码上的 Bad smell (这些问题是码云自带的代码质量检测发现的问题)
J2Cache数据读取流程
每次读数据的时候首先从Ehcache里先读,因为Ehcache在你的内存中。如果有的话直接返回,没有的话就通过通过网络去读redis的数据,如果数据有的话就把它塞到Ehcache里面,再返回。如果redis也没有,这时才读数据库的数据,然后同时把它的数据塞到Ehcache和redis里面,最后返回数据。
清除数据首先是要清除节点。其他节点在收到这个命令的时候,它会清除当前Ehcache里面对应的数据。这样的话清除某一个节点数据,然后通过广播把这数据给其他其他节点,同时也清楚这个数据,这样就保证了整个集群里面的缓存数据是同步的。
因为缓存数据要通过网络传输到redis上,所以我们要求所有的对象都必须是可序列化的。我们最终使用的是FST,因为它速度很快,生成的那个序列号体积也比较小,关键是它对你的项目没有任何侵入性。
测试方法:
安装 Redis
修改 core/Java/j2cache.properties 配置使用已安装的 Redis 服务器
执行 build.sh 进行项目编译
运行多个 runtest.sh
直接在 runtest 输入多个命令进行测试