1、添加依赖
<!-- 缓存-->
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
2、配置文件ehcache.xml
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.ehcache.org/v3"
xsi:schemaLocation="http://www.ehcache.org/v3
http://www.ehcache.org/schema/ehcache-core.xsd"
>
<!-- <persistence directory="/home/app/ehcache"/>-->
<!-- 缓存设置,堆、堆外、磁盘,如果要实现堆外内存和磁盘存储,则必须实现序列化 -->
<cache-template name="common">
<key-type>java.lang.String</key-type>
<value-type>java.lang.Object</value-type>
<resources>
<heap>10000</heap>
<!-- <offheap unit="MB">50</offheap>-->
<!-- <disk unit="GB" persistent="true">1</disk>-->
</resources>
</cache-template>
<!-- 存放token,7天失效-->
<cache alias="token" uses-template="common">
<expiry>
<!-- ttl七天必过期,tti七天空闲过期-->
<ttl unit="days">7</ttl>
</expiry>
</cache>
<!-- 默认缓存,永不过期-->
<cache alias="default" uses-template="common">
<expiry>
<none/>
</expiry>
</cache>
</config>
3、缓存工具类
package com.example.jiakao.common.ehcache;
import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.Configuration;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.xml.XmlConfiguration;
import java.net.URL;
public class Caches {
private static final CacheManager MGR;
private static final Cache<String,Object> DEFAULT_CACHE;
private static final Cache<String,Object> TOKEN_CACHE;
static {
// 初始化缓存管理器
URL url = Caches.class.getClassLoader().getResource("config/ehcache.xml");
assert url != null;
Configuration cfg = new XmlConfiguration(url);
MGR = CacheManagerBuilder.newCacheManager(cfg);
// CacheManager实例只有经过初始化后才能执行获取缓存对象、创建缓存对象
MGR.init();
// 缓存对象
DEFAULT_CACHE = MGR.getCache("default", String.class,Object.class);
TOKEN_CACHE = MGR.getCache("token", String.class,Object.class);
}
public static <T> void put(String key, T value){
DEFAULT_CACHE.put(key,value);
}
public static void remove(String key){
DEFAULT_CACHE.remove(key);
}
public static <T> T get(String key) {
return (T)DEFAULT_CACHE.get(key);
}
public static void clear(){
TOKEN_CACHE.clear();
}
public static <T> void putToken(String key, T value){
TOKEN_CACHE.put(key,value);
}
public static void removeToken(String key){
TOKEN_CACHE.remove(key);
}
public static <T> T getToken(String key) {
return (T)TOKEN_CACHE.get(key);
}
public static void clearToken(){
TOKEN_CACHE.clear();
}
}