背景
最近在使用spring boot时,需要用到redis做缓存,尝试使用Spring cache,发现spring cache里面集成了太多不需要的东西了,但有些关键的东西spring cache却没有集成,比如:对单个缓存标签设置过期时间、根据前缀移除缓存等,还要下载一个Redis可视化客户端来查看缓存。麻烦,实在麻烦!
ace-cache
基于spring boot上的注解缓存,自带轻量级缓存管理页面。
@Cache
和@CacheClear
比spring cache更轻量的缓存,支持单个缓存设置过期时间,可以根据前缀移除缓存。
采用fastjson序列化与反序列化,以json串存于缓存之中。
ace-cache可以快速用于日常的spring boot应用之中。
使用手册
缓存配置
1、配置redis数据源,application.yml文件
#redis-cache 相关
redis:
pool:
maxActive: 300
maxIdle: 100
maxWait: 1000
host: 127.0.0.1
port: 6379
password:
timeout: 2000
# 服务或应用名
sysname: ace
enable: true
database: 0
缓存开启
2、开启AOP扫描
@ComponentScan({"com.ace.cache"})
@EnableAspectJAutoProxy
缓存使用
3、在Service上进行@Cache注解或@CacheClear注解
注解说明
配置缓存:@Cache
注解参数 | 类型 | 说明 |
---|---|---|
key | 字符串 | 缓存表达式,动态运算出key |
expires | 整形 | 缓存时长,单位:分钟 |
desc | 描述 | 缓存说明 |
parser | Class<? extends ICacheResultParser> | 缓存返回结果自定义处理类 |
generator | Class<? extends IKeyGenerator> | 缓存键值自定义生成类 |
清除缓存:@CacheClear
注解参数 | 类型 | 说明 |
---|---|---|
pre | 字符串 | 清除某些前缀key缓存 |
key | 字符串 | 清除某个key缓存 |
keys | 字符串数组 | 清除某些前缀key缓存 |
generator | Class<? extends IKeyGenerator> | 缓存键值自定义生成类 |
默认key动态表达式说明
表达式举例 | 说明 | 举例 |
---|---|---|
@Cache(key="user:{1}") public User getUserByAccount(String account) |
{1}表示获取第一个参数值 {2}表示获取第二个参数值 ……依此类推 |
若:account = ace,则:key = user:ace |
@CacheClear(pre="user{1.account}") User saveOrUpdate(User user) |
{1}表示获取第一个参数值 {1.xx}表示获取第一个参数中的xxx属性 |
若:account=ace,则:key = user:ace |
轻量管理端
访问地址:http://localhost:8080/cache
管理端批量或前缀清除ace-cache注册的缓存,同时也可以快速预览缓存的数据内容,也可以对缓存的失效时间进行延长。
Demo
1、在src/main/test中展开的相关示例代码
CacheTest是核心启动类
service包是缓存调用例子,包含自定义表达式和结果解析、注解的使用
核心设计
开源地址:
github:https://github.com/wxiaoqi/ace-cache
oschina:http://git.oschina.net/geek_qi/ace-cache
欢迎大家star和关注