jetCache整合本地、远程缓存使用redis
阿里出的jetCache,对spring的Cache进行了封装 → 看成是一个底层框架,可以替代spring cache实现本地与远程缓存同时存在的效果2 配置文件3 引导类加注解@EnableCreateCacheAnnotation4 实现类用注解@CreateCache注入cacheput(key,value)get(key)测试别忘了打开redis的服务端关于...............
·
目录
一 jetCache简介
阿里出的jetCache,对spring的Cache进行了封装 → 看成是一个底层框架,可以替代spring cache
实现本地与远程缓存同时存在的效果
但只能兼容四种缓存
二 jetCache整合远程缓存
1 添加依赖
<dependency>
<groupId>com.alicp.jetcache</groupId>
<artifactId>jetcache-starter-redis</artifactId>
<version>2.6.2</version>
</dependency>
2 配置文件
spring:
# 解决jetcache循环依赖问题
main:
allow-circular-references: true
jetcache:
# 使用远程缓存
remote:
default:
type: redis
host: localhost
port: 6379
# 该属性必须要有
poolConfig:
# 最大连接数
maxTotal: 50
# 第2组配置
sms:
type: redis
host: localhost
port: 6379
# 该属性必须要有
poolConfig:
# 最大连接数
maxTotal: 50
3 引导类加注解
@EnableCreateCacheAnnotation
4 实现类
用注解@CreateCache注入cache
put(key,value)
get(key)
package com.qing.service.impl;
import com.alicp.jetcache.Cache;
import com.alicp.jetcache.anno.CreateCache;
import com.qing.bean.SMSCode;
import com.qing.service.SMSCodeService;
import com.qing.util.CodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.concurrent.TimeUnit;
@Service
public class SMSCodeServiceImpl implements SMSCodeService {
@Autowired
CodeUtils codeUtils;
//注意导阿里包alicp的那个
//注入cache,超时时间默认是秒,
// @CreateCache(name="jet",expire = 10,timeUnit = TimeUnit.MINUTES)
// private Cache<String,String> jetCache;
//还可以配置两个这个分别使用
//area的值就是配置文件里用哪一套jetcache配置的名字,area默认用的default
@CreateCache(area = "sms",name="jet",expire = 20)
private Cache<String,String> jetCache2;
//发送验证码
@Override
public String sendCode(String phoneNum) {
String code = codeUtils.generate(phoneNum);
jetCache2.put(phoneNum,code);
return code;
}
//比对验证码
@Override
public boolean checkCode(SMSCode smsCode) {
//取出内存中的验证码与传递过来的验证码比对,相同返回true
String code = smsCode.getCode();
String cacheCode = jetCache2.get(smsCode.getPhoneNum());
return code.equals(cacheCode);
}
}
测试
别忘了打开redis的服务端
三 jetCache整合本地缓存
添加依赖和引导类加注解同远程缓存一样,主要区别是以下两点
1 配置文件
jetcache:
# 使用本地缓存
local:
default:
type: linkedhashmap
# 把对象的key转成json字符串
keyConvertor: fastjson
2 实现类
cacheType = CacheType.LOCAL
//注意导阿里包alicp的那个
//注入cache,超时时间默认是秒,
//cacheType = CacheType.LOCAL:只用本地缓存,还可以有both (默认使用 远程方案)
@CreateCache(name="jet",expire = 10,timeUnit = TimeUnit.MINUTES,cacheType = CacheType.LOCAL)
private Cache<String,String> jetCache;
测试
在本地测试都好用,但是远程redis里没有数据
配置说明
更多推荐
已为社区贡献7条内容
所有评论(0)