# jad-cache
**Repository Path**: 457049726/jad-cache
## Basic Information
- **Project Name**: jad-cache
- **Description**: 此项目是对是Spring3中缓存模块的扩展,增加了对EhCache、MemCache、Redis的实现,使之支持Spring3注解来操作缓存,并且提供了一些新新的功能,具有以下特点:
1、提供统一的缓存操作api;
2、支持同时使用EhCache、MemCache、Redis多种缓存实现;
3、提供灵活的配置;
4、可以防止缓存穿透;
5、可以灵活指定缓存存活时间;
6、任意控制缓存的停用或启用。
- **Primary Language**: Java
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 93
- **Forks**: 34
- **Created**: 2017-03-12
- **Last Updated**: 2025-08-28
## Categories & Tags
**Categories**: cache-modules
**Tags**: None
## README
### jad-cache
此项目是对是Spring3中缓存模块的扩展,除了沿用原来的Spring缓存注解之外,还增加了对MemCache、EhCache、redis的实现,并且提供了一些新新的功能,本项目具有以下特点:
1.提供统一的缓存操作api;
2.支持同时使用EhCache、MemCache和redis等多种缓存实现;
3.提供灵活的配置;
4.可以防止缓存穿透;
5.可以灵活指定缓存存活时间;
6.任意控制缓存的停用或启用。
### 使用手册与其它参考文档
_JAD-CACHE缓存框架,使用手册_
[https://my.oschina.net/u/1415710/blog/857238](https://my.oschina.net/u/1415710/blog/857238)
JAD-CACHE架构设计
[https://my.oschina.net/u/1415710/blog/855923](https://my.oschina.net/u/1415710/blog/855923)
_JAD-CACHE集成 memcache 原理_
[https://my.oschina.net/u/1415710/blog/857246](https://my.oschina.net/u/1415710/blog/857246)
_JAD-CACHE集成 EhCache 原理_
[https://my.oschina.net/u/1415710/blog/857245](https://my.oschina.net/u/1415710/blog/857245)
**本项目附件中有详细的使用册及其它参考文档可打包下载** ,在本项目wiki首页中也有相关连接,包括本项目的架构设计,源码解读等等。
关注最下方作者公众号,可获得最新信息。
### 快速集成
JAD-CACHE目前暂时只支持Map本地缓存、EhCache、MemCache和redis四种,开发人员可以单独使用其中一种,也可以同时使用这几种。
JAD-CACHE是典型的Maven项目,下分四个子模块jad-cache-api、jad-cache-ehcache、jad-cache-memcache、jad-cache-redis。
其中jad-cache-api为公用部分及相关api,jad-cache-ehcache为与Ehcache的集成模块,jad-cache-memcache为与memcache的集成模块。
开发人员在将本框架集成到项目中时,可以选择性的使用自己想集成的缓存实现,如果只使用Map本地缓存,就加入以下依赖:
```
com.jad.infr
jad-cache-api
1.0.2-RELEASE
```
如果你想用ehcache缓存,就用加入以下依赖:
```
com.jad.infr
jad-cache-ehcache
1.0.2-RELEASE
```
如果用memcache,就用以下依赖
```
com.jad.infr
jad-cache-memcache
1.0.2-RELEASE
```
如果用redis,就用以下依赖
```
com.jad.infr
jad-cache-memcache
1.0.2-redis
```
_提示:用ehcache或memcahce时,jad-cache-ehcache或jad-cache-memcache会自动把它相关依赖添加进来(包括本框架的jad-cache-api),用户无须再额外配置。_
### 常用配置案例
本框架的配置总体上比较简单,但是比较灵活,而且很多参数都可以缺省配置,以下跟据不同的业务场景提供了几种极简的默认配置,开发人员可以在这个基础上进行配置。
_项目中只使用EhCache的配置_
```
```
_项目中只使用MemCache的配置_
```
```
_项目中同时使用EhCache和MemCache的配置_
```
ehCache1
ehCache2
memCache1
memCache2
```
### 基本使用
_注解方式_
注解方式跟使用SpringCache自身的缓存注解方式一模一样,这里不再介绍。
_api方式_
本框架两个两个类作为开放的操作缓存的api,分别是:
**com.jad.cache.common.api.CacheClientHelper** 和 **com.jad.cache.common.api.CacheHelper**
其中CacheClientHelper类操作缓存客户端实例的启停,CacheHelper类可以从给定名称的Cache中读取缓存数据。
**CacheClientHelper常用api**
CacheClientHelper常用的方法如下:
**getInstance()** 获得此类的实例(此类的构造函数已经私有化了,需要通过此方法来获得它的实例)。
**init(MasterCacheManager)** 初始化,这个方法系统会自动调用,开发人员无需理会
**getClientNames()** 获得系统中所有缓存客户端的名称列表
**start(String)** 启动一个客户端,参数为客户端名称
**stop(String)** 停止一个客户端,参数为客户端名称
**isStarted(String)** 检查客户端是否启动,参数为客户端名称
CacheHelper常用api
**getInstance(String)** 跟据缓存名称获得此类的实例(此类的构造函数已经私有化了,需要通过此方法来获得它的实例),参数为需要操作的 Cache的名称。
**get(String)** 从缓存中读取数,参数为key
**put(String, Serializable)** 往缓存中插入数据
**put(String, Serializable, int)** 往缓存中插入数据,并指定存活时间
**evict(String)** 跟据key从缓存中删除数据
**clear()** 清空缓存数据
### 关于单元测试
本框架源码中每个模块都有对应的单元测试类,代码在src/test/java下面,配置在src/test/resources。本人是通过testng进行测试的,建议开发人员安装testng插件进行测试。
### 关于日志输出配置
本框架采用log4j输出日志,配置如下:
```
#alisoft memcache
log4j.logger.com.alisoft.xplatform.asf.cache=ERROR
#ehcache
log4j.logger.net.sf.ehcache=ERROR
```
以上两行分别是阿里memcache 客户端中的日志配置以及ehcache的配置
跟本框架相关的日志配置如下
```
#jad-cache-api
log4j.logger.com.jad.cache.common=DEBUG
#jad-cache-ehcache
log4j.logger.com.jad.cache.ehcache=DEBUG
#jad-cache-memcache
log4j.logger.com.jad.cache.memcache=DEBUG
```
其它具体的详细配置可参见源码的测试用例,开发人员可跟据自己的需要来指定相应的日志输出级别
### 关于作者
想了解更多详细信息,可用微信扫一下二维码关注本人的公众号
