git地址:https://github.com/BeyongTheMemory/easy-cache
1.需求缘起
在项目中我们经常使用缓存,比如使用redis作为远程缓存,使用Guava LocalCache作为本地缓存,等等。在业务与数据库之间添加缓存既能降低数据库的压力同时也能提高系统性能。
但是在使用过程中难免会有这样的问题:
- 写入和删除缓存的代码硬编码在项目中,无法专注于业务,代码也不够美丽;
- 对于不需要强依赖缓存或有降级需求的业务,需要自行维护缓存系统当前状态(如依赖redis的需判断其是否可用,不可用则不再访问redis)同时还需有守护线程在缓存系统恢复后结束降级;
- 对于使用缓存的分布式系统,如何同时淘汰所有机器的本地缓存也是一个较为苦恼的问题;
- 等等
2.功能描述
Easy-Cache目前支持以下功能:
- 注解方式写入与刷新缓存,支持SPEL表达式;
- 支持本地内存缓存(目前使用Guava实现,未来会有更多方式提供选择)
- 分布式集群统一淘汰或写入本地缓存(需利用Zookeeper,未来会提供更多使用方案)
- 支持远程缓存(目前暂只支持redis,未来会支持更多类型)
3.使用方式
3.1. 添加maven依赖:
<dependency>
<groupId>online.ipop</groupId>
<artifactId>easycache</artifactId>
<version>0.0.1-RELEASE</version>
<type>pom</type>
</dependency>
3.2. 添加如下配置到你的spring配置文件中:
<bean class="com.pop.easycache.CacheBuilder">
</bean>
3.3.为上面的bean配置参数,主要参数有如下几个:
- useLocalCache 是否启用本地缓存,默认为false
- useRemoteCache 是否启用远程缓存,默认为false
- useRegistry 是否启用注册中心(用于在集群间同步本地缓存更新,默认为false)
注:若启用远程缓存或注册中心,还需增加远程缓存及注册中心服务地址的相关配置。
因此最终你的配置可能是这样子:
<bean class="com.pop.easycache.CacheBuilder">
<property name="useLocalCache" value="true"/>
<property name="useRemoteCache" value="true"/>
<property name="useRegistry" value="true"/>
<property name="redisUrl" value="127.0.0.1"/>
<property name="redisPort" value="6379"/>
<property name="registryServer" value="127.0.0.1"/>
</bean>
更多配置项请参看com.pop.easycache.CacheBuilder下的注释
3.4. 添加注解:
- 需要缓存的方法:添加@NeedCache注解,可选参数有name和key,name和key将共同组成缓存的键值,其中key支持SPEL表达式
- 需要清楚缓存:添加@CacheFlush注解,可选参数有name和key,其中key支持SPEL表达式
网友评论