# J2Cache **Repository Path**: wangzhangmao/J2Cache ## Basic Information - **Project Name**: J2Cache - **Description**: 这是一个 Java 的缓存框架,可以让应用支持两级缓存框架 ehcache + redis (memcached)。避免完全使用独立缓存系统所带来的网络IO开销问题。【目前OSChina网站正在使用该缓存框架】 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://www.oschina.net/p/j2cache - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1759 - **Created**: 2017-01-19 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README J2Cache —— 基于 Ehcache 和 Redis 实现的两级 Java 缓存框架 =============== 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 的读取次数 ## 数据读取 1. 读取顺序 -> L1 -> L2 -> DB 2. 数据更新 1 从数据库中读取最新数据,依次更新 L1_1 -> L2 ,广播清除某个缓存信息 2 接收到广播(手工清除缓存 & 一级缓存自动失效),从 L1\_2 中清除指定的缓存信息 ## J2Cache 配置 配置文件位于 core/resources 目录下,包含三个文件: * ehcache.xml Ehcache 的配置文件,配置说明请参考 Ehcache 文档 * j2cache.properties J2Cache 核心配置文件,可配置 Redis 服务器、连接池以及缓存广播的方式 * network.xml JGroups 网络配置,如果使用 JGroups 组播的话需要这个文件,一般无需修改 实际使用过程需要将这三个文件复制到应用类路径中,如 WEB-INF/classes 目录。 ## 构建方法 ***使用 Ant 构建*** 1. 安装 Redis 2. 修改 core/resource/j2cache.properties 配置使用已安装的 Redis 服务器 3. 执行 build.sh 进行项目编译 4. 运行多个 runtest.sh 5. 直接在 runtest 输入多个命令进行测试 ***使用 Maven 构建*** $ mvn install ***项目直接导入 Eclipse 自动编译*** ## 运行时所需 jar 包 1. lib/commons-logging-1.1.1.jar 2. lib/commons-pool2-2.4.2.jar 3. lib/ehcache-core-2.6.11.jar 4. lib/fst-1.58.jar 5. lib/jedis-2.7.2.jar 6. lib/jgroups-3.6.6.Final.jar 7. lib/slf4j-*.jar ## Maven 支持 ``` net.oschina.j2cache j2cache-core 1.2.0 ``` ## 示例代码 请看 core/Java/net/oschina/j2cache/CacheTester.java