J2Cache 是 OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的 Ehcache 缓存数据丢失。
J2Cache 从 1.3.0 版本开始支持 JGroups 和 Redis Subscribe 两种方式进行缓存时间的通知。在某些云平台上可能无法使用 JGroups 组播方式,可以采用 Redis 发布订阅的方式。详情请看 j2cache.properties 配置文件的说明。
视频介绍:http://v.youku.com/v_show/id_XNzAzMTY5MjUy.html
该项目提供付费咨询服务,详情请看:https://zb.oschina.net/market/opus/12_277
J2Cache 的两级缓存结构
L1: 进程内缓存(ehcache)
L2: 集中式缓存,支持多种集中式缓存服务器,如 Redis、Memcached 等
由于大量的缓存读取会导致 L2 的网络带宽成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数
-
读取顺序 -> L1 -> L2 -> DB
-
数据更新
1 从数据库中读取最新数据,依次更新 L1_1 -> L2 ,广播清除某个缓存信息
2 接收到广播(手工清除缓存 & 一级缓存自动失效),从 L1_2 中清除指定的缓存信息
配置文件位于 core/resources 目录下,包含三个文件:
- ehcache.xml Ehcache 的配置文件,配置说明请参考 Ehcache 文档
- j2cache.properties J2Cache 核心配置文件,可配置 Redis 服务器、连接池以及缓存广播的方式
- network.xml JGroups 网络配置,如果使用 JGroups 组播的话需要这个文件,一般无需修改
实际使用过程需要将这三个文件复制到应用类路径中,如 WEB-INF/classes 目录。
使用 Ant 构建
- 安装 Redis
- 修改 core/resource/j2cache.properties 配置使用已安装的 Redis 服务器
- 执行 build.sh 进行项目编译
- 运行多个 runtest.sh
- 直接在 runtest 输入多个命令进行测试
使用 Maven 构建
$ mvn install
项目直接导入 Eclipse 自动编译
- lib/commons-logging-1.1.1.jar
- lib/commons-pool2-2.4.2.jar
- lib/ehcache-core-2.6.11.jar
- lib/fst-1.58.jar
- lib/jedis-2.7.2.jar
- lib/jgroups-3.6.6.Final.jar
- lib/slf4j-*.jar
<dependency>
<groupId>net.oschina.j2cache</groupId>
<artifactId>j2cache-core</artifactId>
<version>1.2.0</version>
</dependency>
请看 core/Java/net/oschina/j2cache/CacheTester.java