<p align="center">
<img src="https://gitee.com/ld/J2Cache/raw/master/docs/J2Cache.png" alt="J2Cache">
</p>
<p align="center">
<h2>J2Cache —— 基于内存和 Redis 的两级 Java 缓存框架</h2>
</p>
JavaDoc [https://apidoc.gitee.com/ld/J2Cache/](https://apidoc.gitee.com/ld/J2Cache/)
J2Cache 是 OSChina 目前正在使用的两级缓存框架(要求至少 Java 8)。第一级缓存使用内存(同时支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine),第二级缓存使用 Redis(推荐)/Memcached 。
由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。
该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的缓存冷启动后对后端业务的冲击。
J2Cache 相关文章:
- [J2Cache 和普通缓存框架有何不同,它解决了什么问题?](https://my.oschina.net/javayou/blog/1931381)
- [J2Cache 两级缓存中的 Region 到底是什么东西?](https://my.oschina.net/javayou/blog/3031773)
- [如何让 J2Cache 在多种编程语言环境中使用](https://my.oschina.net/javayou/blog/2247729)
- [J2Cache 中使用 Lettuce 替代 Jedis 管理 Redis 连接](https://my.oschina.net/javayou/blog/2247710)
- [如何通过 J2Cache 实现分布式 session 存储](https://my.oschina.net/javayou/blog/2117109)
- [J2Cache 没有 Redis 也可以实现多节点的缓存同步](https://my.oschina.net/javayou/blog/1865908)
- [微服务的架构里应该使用 J2Cache 两级缓存框架](https://my.oschina.net/javayou/blog/1827480)
- [J2Cache 和 JetCache 框架有何不同?](https://my.oschina.net/javayou/blog/2988523)
- [J2Cache 线上异常问题排查记录](https://my.oschina.net/keking/blog/3058409)
J2Cache 已经有 Python 语言版本了,详情请看 [https://gitee.com/ld/Py3Cache](https://gitee.com/ld/Py3Cache)
J2Cache 从 1.3.0 版本开始支持 JGroups 和 Redis Pub/Sub 两种方式进行缓存事件的通知。在某些云平台上可能无法使用 JGroups 组播方式,可以采用 Redis 发布订阅的方式。详情请看 j2cache.properties 配置文件的说明。
视频介绍:http://v.youku.com/v_show/id_XNzAzMTY5MjUy.html
J2Cache 的两级缓存结构
L1: 进程内缓存(caffeine\ehcache)
L2: Redis/Memcached 集中式缓存
## 数据读取
1. 读取顺序 -> L1 -> L2 -> DB
2. 数据更新
1 从数据库中读取最新数据,依次更新 L1 -> L2 ,发送广播清除某个缓存信息
2 接收到广播(手工清除缓存 & 一级缓存自动失效),从 L1 中清除指定的缓存信息
## J2Cache 配置
配置文件位于 core/resources 目录下,包含三个文件:
* j2cache.properties J2Cache 核心配置文件,可配置两级的缓存,Redis 服务器、连接池以及缓存广播的方式
* caffeine.properties 如果一级缓存选用 Caffeine ,那么该文件用来配置缓存信息
* ehcache.xml Ehcache 的配置文件,配置说明请参考 Ehcache 文档
* ehcache3.xml Ehcache3 的配置文件,配置说明请参考 Ehcache 文档
* network.xml JGroups 网络配置,如果使用 JGroups 组播的话需要这个文件,一般无需修改
实际使用过程需要将所需的配置文件复制到应用类路径中,如 WEB-INF/classes 目录。
J2Cache 运行时所需 jar 包请查看 core/pom.xml
## 测试方法
1. 安装 Redis
2. `git clone https://gitee.com/ld/J2Cache`
3. 修改 `core/resource/j2cache.properties` 配置使用已安装的 Redis 服务器
4. 在命令行中执行 `mvn package -DskipTests=true` 进行项目编译
5. 打开多个命令行窗口,同时运行 `runtest.sh`
6. 在 > 提示符后输入 help 查看命令,并进行测试
## 示例代码
详细的使用方法请看 [J2CacheCmd.java](https://gitee.com/ld/J2Cache/blob/master/core/src/net/oschina/j2cache/J2CacheCmd.java)
与spring cache 集成 [SpringCache 集成 J2Cache 配置案例](./modules/springcache/j2cache-springcache.md)
## 使用方法
J2Cache 默认使用 [Caffeine](https://www.oschina.net/p/ben-manes-caffeine) 作为一级缓存,使用 Redis 作为二级缓存。你还可以选择 Ehcache2 和 Ehcache3 作为一级缓存。
**准备工作**
1. 安装 Redis
2. 新建一个基于 Maven 的 Java 项目
**一. 引用 Maven**
```xml
<dependency>
<groupId>net.oschina.j2cache</groupId>
<artifactId>j2cache-core</artifactId>
<version>xxxxx</version>
</dependency>
```
中央仓库地址:[>>飞机](https://mvnrepository.com/artifact/net.oschina.j2cache/j2cache-core)
**二. 准备配置**
拷贝 `j2cache.properties` 和 `caffeine.properties` 到你项目的源码目录,并确保这些文件会被编译到项目的 classpath 中。如果你选择了 ehcache 作为一级缓存,需要拷贝 `ehcache.xml` 或者 `ehcache3.xml` 到源码目录(后者对应的是 Ehcache 3.x 版本),这些配置文件的模板可以从 [https://gitee.com/ld/J2Cache/tree/master/core/resources](https://gitee.com/ld/J2Cache/tree/master/core/resources) 这里获取。
使用你喜欢的文本编辑器打开 `j2cache.properties` 并找到 `redis.hosts` 项,将其信息改成你的 Redis 服务器所在的地址和端口。
我们建议缓存在使用之前都需要预先设定好缓存大小及有效时间,使用文本编辑器打开 caffeine.properties 进行缓存配置,配置方法请参考文件中的注释内容。
例如:default = 1000,30m #定义缓存名 default ,对象大小 1000,缓存数据有效时间 30 分钟。 你可以定义多个不同名称的缓存。
**三. 编写代码**
Test.java
```java
public static void main(String[] args) {
CacheChannel cache = J2Cache.getChannel();
//缓存操作
cache.set("default", "1", "Hello J2Cache");
System.out.println(cache.get("default", "1"));
cache.evict("default", "1");
System.out.println(cache.get("default", "1"));
cache.close();
}
```
编译并运行查看结果,更多的用法请参考 [CacheChannel.java](https://gitee.com/ld/J2Cache/blob/master/core/src/net/oschina/j2cache/CacheChannel.java) 接口的方法。
*请注意 cache.close() 方法只需在程序退出时调用。*
**四. 动态构建 J2Cache 实例**
```java
J2CacheConfig config = new J2CacheConfig();
//填充 config 变量所需的配置信息
J2CacheBuilder builder = J2CacheBuilder.init(config);
CacheChannel channel = builder.getChannel();
//进行缓存的操作
channel.close();
```
**五. 集群测试**
为了方便测试集群模式下 J2Cache 的运行,我们提供了一个命令行小程序,请参考此页面前面的 [“测试方法”](#%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95)。
## 常见问题
1. **J2Cache 的使用场景是什么?**
首先你的应用是运行在集群环境,使用 J2Cache 可以有效降低节点间的数据传输量;其次单节点使用 J2Cache 可以避免应用重启后对后端业务系统的冲击
2. **为什么不能在程序中设置缓存的有效期**
在程序中定义缓存数据的有效期会导致缓存不可控,一旦数据出问题无从查起,因此 J2Cache 的所有缓存的有效期都必须在 `一级缓存` 的配置中预设好再使用
3. **如何使用 JGroups 组播方式(无法在云主机中使用)**
首先修改 `j2cache.properties` 中的 `j2cache.broadcast` 值为 `jgroups`,然后在 maven 中引入
```xml
<dependency>
<groupId>org.jgroups</groupId>
<artifactId>jgroups</artifactId>
<version>3.6.13.Final</version>
</dependency>
```
4. **如何使用 ehcache 作为一级缓存**
首先修改 `j2cache.properties` 中的 `j2cache.L1.provider_class` 为 ehcache 或者 ehcache3,然后拷贝 ehcache.xml 或者 ehcache3.xml 到类路径,并配置好缓存,需要在项目中引入对 ehcache 的支持:
```xml
<dependency><!-- Ehcache 2.x //-->
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<versio
没有合适的资源?快使用搜索试试~ 我知道了~
Java 两级缓存框架,可以让应用支持两级缓存框架.zip
共316个文件
java:236个
xml:33个
properties:17个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 55 浏览量
2024-05-14
06:52:41
上传
评论
收藏 504KB ZIP 举报
温馨提示
java 简单性 Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持goto语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。 面向对象 Java是一个面向对象的语言。对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
资源推荐
资源详情
资源评论
收起资源包目录
Java 两级缓存框架,可以让应用支持两级缓存框架.zip (316个子文件)
runtest.bat 41B
spring.factories 267B
spring.factories 267B
.gitignore 90B
org.springframework.boot.autoconfigure.AutoConfiguration.imports 198B
J2CacheMessageLogger_$logger.java 178KB
J2CacheMessageLogger_$logger.java 160KB
RedisClient.java 30KB
RedisClient.java 29KB
CacheChannel.java 16KB
AntPathMatcher.java 15KB
J2CacheSpringRedisAutoConfiguration.java 12KB
J2CacheSpringRedisAutoConfiguration.java 11KB
LettuceCacheProvider.java 10KB
CaffeineProvider.java 10KB
CacheFacade.java 10KB
StringUtils.java 9KB
AbstractReadWriteJ2CacheAccessStrategy.java 9KB
RedisGenericCache.java 9KB
AbstractReadWriteJ2CacheAccessStrategy.java 9KB
RedisPubSubClusterPolicy.java 8KB
J2CacheConfig.java 8KB
NonstopAwareEntityRegionAccessStrategy.java 7KB
NonstopAwareNaturalIdRegionAccessStrategy.java 7KB
NonstopAwareEntityRegionAccessStrategy.java 7KB
LettuceGenericCache.java 7KB
NonstopAwareNaturalIdRegionAccessStrategy.java 7KB
J2CacheSpringRedisAutoConfiguration.java 6KB
J2CacheSpringCacheAdapter.java 6KB
RabbitMQClusterPolicy.java 6KB
J2CacheRegionFactoryTest.java 6KB
NonstopAwareCollectionRegionAccessStrategy.java 6KB
J2CacheRegionFactoryTest.java 6KB
EhCacheProvider3.java 5KB
EhCacheProvider.java 5KB
J2CacheSessionFilter.java 5KB
Level2Cache.java 5KB
NonstopAwareCollectionRegionAccessStrategy.java 5KB
RedisCache.java 5KB
CacheProviderHolder.java 5KB
VicariousThreadLocal.java 5KB
J2CacheAccessStrategyFactoryImpl.java 5KB
J2CacheCmd.java 5KB
KryoPoolSerializer.java 5KB
J2CacheRegion.java 5KB
J2CacheMessageLogger.java 5KB
J2CacheMessageLogger.java 5KB
RocketMQClusterPolicy.java 4KB
ClusterPolicyFactory.java 4KB
CacheChannelTest.java 4KB
SpringRedisPubSubPolicy.java 4KB
SpringRedisPubSubPolicy.java 4KB
SpringRedisPubSubPolicy.java 4KB
J2CacheBuilder.java 4KB
J2CacheAccessStrategyFactoryImpl.java 4KB
EhCache.java 4KB
XmemcachedCacheProvider.java 4KB
JGroupsClusterPolicy.java 4KB
RedisCacheProvider.java 4KB
LettuceHashCache.java 4KB
VicariousThreadLocal.java 4KB
J2CacheSession.java 4KB
RedisHashCache.java 4KB
MemCache.java 4KB
ReadWriteJ2CacheEntityRegionAccessStrategy.java 4KB
SlewClock.java 4KB
SpringJ2CacheConfigUtil.java 4KB
SlewClock.java 4KB
SpringJ2CacheConfigUtil.java 4KB
SerializationUtils.java 4KB
SpringRedisGenericCache.java 4KB
SpringRedisGenericCache.java 3KB
ClusterPolicy.java 3KB
ReadWriteJ2CacheEntityRegionAccessStrategy.java 3KB
TransactionalJ2CacheEntityRegionAccessStrategy.java 3KB
J2CacheDataRegion.java 3KB
J2HibernateCache.java 3KB
CacheObject.java 3KB
SpringRedisGenericCache.java 3KB
SessionObject.java 3KB
NonStrictReadWriteJ2CacheEntityRegionAccessStrategy.java 3KB
AbstractJ2CacheRegionFactory.java 3KB
TransactionalJ2CacheNaturalIdRegionAccessStrategy.java 3KB
ReadOnlyJ2CacheEntityRegionAccessStrategy.java 3KB
NonStrictReadWriteJ2CacheNaturalIdRegionAccessStrategy.java 3KB
EhCache3.java 3KB
J2CacheTransactionalDataRegion.java 3KB
Command.java 3KB
ReadOnlyJ2CacheNaturalIdRegionAccessStrategy.java 3KB
ApplicationTests.java 3KB
ReadWriteJ2CacheNaturalIdRegionAccessStrategy.java 3KB
ApplicationTests.java 3KB
AbstractJ2CacheRegionFactory.java 3KB
TransactionalJ2CacheEntityRegionAccessStrategy.java 3KB
J2CacheDataRegion.java 3KB
ReadWriteJ2CacheNaturalIdRegionAccessStrategy.java 3KB
ReadonlyRedisCacheProvider.java 3KB
TransactionalJ2CacheNaturalIdRegionAccessStrategy.java 3KB
SpringRedisCache.java 3KB
ReadOnlyJ2CacheEntityRegionAccessStrategy.java 3KB
共 316 条
- 1
- 2
- 3
- 4
资源评论
野生的狒狒
- 粉丝: 2877
- 资源: 2274
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab app designer设计的一个简易的数独生成与求解器源码+项目说明.zip
- 基于MATLAB实现的一个音乐播放器音乐特效处理时域与频域波形显示等源码+项目说明.zip
- 树状数组(Binary Indexed Tree,BIT)高效地处理动态的区间求和问题
- A keygen for Navicat(C++)
- navicat数据库管理工具管理数据库,执行查询、编辑数据、备份和恢复
- 期末大作业基于Matlab语言的路标识别项目资料齐全+说明文档+GUI界面+详细注释.zip
- 基于Phthon+OpenCV的组合动作常规摄像头人脸活体检测识别系统
- 基于YOLOv5的7.0版本+pyqt5界面+人脸表情识别(源码+项目说明)
- 基于 Python活体人脸检测及身份检测,口罩佩戴检测,绿码检测以及声纹身份识别
- springboot《4S店车辆管理系统》论文+ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功