三步:①坐标;②配置;③配置文件。
1、(Maven)加入Ehcache坐标(缓存供应商实现)
net.sf.ehcache ehcache
2、(application.yml)缓存设定为使用Ehcache
spring:
cache:
type: ehcache
ehcache:
config: ehcache.xml
这里注意:配置了,没有导Maven坐标是会报错的。导入了还是会报错,为什么?
因为Ehcache是spring之外的技术,有自己的配置文件,而我们此时并未导入Ehcahe配置文件。
3、提供ehcache配置文件ehcache.xml
Redis(常用)
1、MAVEN坐标
org.springframework.boot spring-boot-starter-data-redis
2、(application.yml)配置
spring:
application:
name: springdataredis_demo
#Redis相关配置
redis:
host: localhost
port: 6379
password: 253489
database: 0 #操作的是0号数据库
jedis:
#Redis连接池配置
pool:
max-active: 8 #最大连接数
max-wait: 1ms #连接池最大阻塞等待时间
max-idle: 4 #连接池中的最大空闲连接
min-idle: 0 #连接池中的最小空闲连接
3、配置文件(.config)
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public RedisTemplate
Memcached
附上下载地址:地址:Windows 下安装 Memcached | 菜鸟教程
下载解压目录下CMD,启动服务指令:memcached.exe -d start
1、(Maven)Xmemcache坐标
com.googlecode.xmemcached xmemcached2.4.7
2、(application.yml)配置memcached服务器必要属性
memcached:
servers: localhost:11211 # memcached服务器地址
poolSize: 10 # 连接池的数量
opTimeout: 3000 # 设置默认操作超时
3、(config包下)创建读取属性配置信息类,加载配置
@Component
@ConfigurationProperties(prefix = "memcached")
@Data
public class XMemcachedProperties {
private String servers;
private Integer poolSize;
private Long opTimeout;
}
(config包下)还需创建客户端配置类
@Configuration
public class XMemcachedConfig {
@Autowired
private XMemcachedProperties xMemcachedProperties;
@Bean
public MemcachedClient getMemcachedClinet() throws IOException {
MemcachedClientBuilder builder = new XMemcachedClientBuilder(xMemcachedProperties.getServers());
MemcachedClient memcachedClient = builder.build();
return memcachedClient;
}
Jetcache
1、(Maven)加入jetcache坐标
com.alicp.jetcache jetcache-starter-redis2.6.2
2、(application.yml)远程与本地缓存配置
jetcache:
statIntervalMinutes: 15
areaInCacheName: false
local:
default:
type: linkedhashmap
keyConvertor: fastjson
limit: 100
remote:
default:
host: localhost
port: 6379
type: redis # type是缓存类型属性
keyConvertor: fastjson # key转换器属性
valueEncoder: java # remote类型缓存指定,java或kryo
valueDecoder: java # remote类型缓存指定,java或kryo
poolConfig:
minIdle: 5
maxIdle: 20
maxTotal: 50
3、不需配置文件,但需声明缓存对象,springboot项目中还需加上@EnableCreateCacheAnnotation在启动类注解上
目前通常使用注解开发@Cached、@CacheRefresh、@CacheUpdate、@CacheInvalidate等
- 使用(声明缓存对象)
-
@Service public class SMSCodeServiceImpl implements SMSCodeService { @Autowired private CodeUtils codeUtils; @CreateCache(name = "smsCache", expire = 3600) //默认超时时间设为3600秒 private CachejetSMSCache; @Override public String sendCodeToSMS(String tele) { String code = this.codeUtils.generator(tele); jetSMSCache.put(tele,code); return code; } @Override public boolean checkCode(CodeMsg codeMsg) { String value = jetSMSCache.get(codeMsg.getTele()); return codeMsg.getCode().equals(value); } }
注:缓存的实体类对象必须保证可序列化。
J2cache1、Maven坐标
net.oschina.j2cache j2cache-spring-boot2-starter2.8.0-release net.oschina.j2cache j2cache-core2.8.4-release net.sf.ehcache ehcache
2、配置
j2cache: config-location: j2cache.properties # 配置1级缓存 j2cache.L1.provider_class = ehcache ehcache.configXml = ehcache.xml # 配置1级缓存数据到2级缓存的广播方式:可以使用redis提供的消息订阅模式,也可以使用jgroups多播实现 j2cache.broadcast = net.oschina.j2cache.cache.support.redis.SpringRedisPubSubPolicy # 配置2级缓存 j2cache.L2.provider_class = net.oschina.j2cache.cache.support.redis.SpringRedisProvider j2cache.L2.config_section = redis redis.hosts = localhost:6379
3、声明缓存对象(里面的参数是可以自调的)
@Service
public class SMSCodeServiceImpl implements SMSCodeService {
@Autowired
private CodeUtils codeUtils;
@Autowired
private CacheChannel cacheChannel;
@Override
public String sendCodeToSMS(String tele) {
String code = codeUtils.generator(tele);
cacheChannel.set("sms",tele,code);
return code;
}
@Override
public boolean checkCode(SMSCode smsCode) {
String code = cacheChannel.get("sms",smsCode.getTele()).asString();
return smsCode.getCode().equals(code);
}
}



