缓存框架之jetcache

本地缓存(Local)
LinkedHashMap
Caffeine
远程缓存(Remote)
Redis
Tair
jetcache缓存实现是可选的,我们肯定用linkedhashmap和redis组合啊,哈哈!另外两个也不熟
首先要写配置文件
jetcache:
remote:
default:
type: redis
host: localhost
port: 6379
keyConvertor: fastjson
poolConfig:
maxTotal: 50

有local和remote,由于redis不支持之间存对象的,所以还有一个序列化方式填的fastjson
配置好之后就可以通过createcache注解拿到缓存对象进行使用了。
@CreateCache(name=“jetCache_”,expire = 10,timeUnit = TimeUnit.SECONDS area=“default”)
private Cache<String ,String> jetCache;
public String sendCodeToSMS(String tele) {
String code = codeUtils.generator(tele);
jetCache.put(tele,code);
return code;
}
public boolean checkCode(SMSCode smsCode) {
String code = jetCache.get(smsCode.getTele());
return smsCode.getCode().equals(code);
}

cacheType = CacheType.BOTH
注解中还可以通过cachetype属性来指定用本地缓存还是远程缓存,或者都用both。cachetype默认是remote。

jetcache:
local:
default:
type: linkedhashmap
keyConvertor: fastjson
remote:
default:
type: redis
host: localhost
port: 6379
keyConvertor: fastjson
valueEncode: java
valueDecode: java
poolConfig:
maxTotal: 50
sms:
type: redis
host: localhost
port: 6379
poolConfig:
maxTotal: 50

由于redis缓存中不支持保存对象,因此需要对redis设置当Object类型数据进入到redis中时如何进行类型转换。需要配置keyConvertor表示key的类型转换方式,同时标注value的转换类型方式,值进入redis时是java类型,标注valueEncode为java,值从redis中读取时转换成java,标注valueDecode为java。

@Cached:系统调用该接口方法时检测到@Cached标签,首先会根据key去调用get方法获取value值,如果存在value值则直接将值返回,如果不存在key,则会执行代码查询结果,并自动调用get方法将返回值存入缓存中。
@Cached(name=“book_”,key=“#id”,expire = 3600,cacheType = CacheType.REMOTE)
public Book getById(Integer id) {
return bookDao.selectById(id);
}

此外jetcache还支持@CacheUpdate、@CacheInvalidate更新和删除缓存
@Cached(name=“book_”,key=“#id”,expire = 3600,cacheType = CacheType.REMOTE)
@CacheRefresh(refresh = 5)
还支持定时刷新缓存

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值