今天学习了springboot整合j2cache,j2cache只是一个框架,接下来向大家介绍一下j2cache整合redis和ehcache。
首先在pom文件导入坐标:
<dependency> <groupId>net.oschina.j2cache</groupId> <artifactId>j2cache-core</artifactId> <version>2.8.4-release</version> </dependency> <dependency> <groupId>net.oschina.j2cache</groupId> <artifactId>j2cache-spring-boot2-starter</artifactId> <version>2.8.0-release</version> </dependency> <!-- 自带有redis依赖 -->
<dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency> <!-- 导入ehcache依赖 -->
接下来做相关配置:
在yml文件中配置:
j2cache: config-location: j2cache.properties # 配置j2cache需要的文件
j2cache.properties:
# 1级缓存 j2cache.L1.provider_class = ehcache ehcache.configXml = ehcache.xml # 对应下面的ehcache.xml文件,两者名字必须一样 # 设置是否启用2级缓存 j2cache.l2-cache-open = false # 2级缓存 j2cache.L2.provider_class = net.oschina.j2cache.cache.support.redis.SpringRedisProvider j2cache.L2.config_section = redis redis.hosts = localhost:6379 # 1级缓存中的数据如何到达2级缓存 j2cache.broadcast = net.oschina.j2cache.cache.support.redis.SpringRedisPubSubPolicy
创建ehcache.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <diskStore path="D:\ehcache"/> <defaultCache eternal="false" diskPersistent="false" maxElementsInMemory="1000" overflowToDisk="false" timeToIdleSeconds="60" timeToLiveSeconds="60" memoryStoreEvictionPolicy="LRU"/> </ehcache>
接下来操作缓存:
public class SMSCodeServiceImpl implements SMSCodeService { @Autowired private CodeUtils codeUtils; //自定义验证码bean @Autowired //注入缓存 private CacheChannel cacheChannel; @Override public String sendCodeToSMS(String tel) { String code = codeUtils.generator(tel); cacheChannel.set("sms",tel,code); //向缓存存数据 return code; } @Override public boolean checkCode(SMSCode smsCode) { String code = cacheChannel.get("sms",smsCode.getTel()).asString(); //取数据 return smsCode.getCode().equals(code); } }
欢迎大家一起学习,有不足的地方还请指出。