import com.github.benmanes.caffeine.cache.Cache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* Caffeine缓存工具类
*
* @Author xty
* @Date 2022-03-15 14:58
**/
@Component
public class CaffeineUtils {
@Autowired
Cache<String, Object> caffeineCache;
/**
* 添加或更新缓存
*
* @param key
* @param value
*/
public void putAndUpdateCache(String key, Object value) {
caffeineCache.put(key, value);
}
/**
* 获取对象缓存
*
* @param key
* @return
*/
public <T> T getObjCacheByKey(String key, Class<T> t) {
// return (T) caffeineCache.getIfPresent(key);
return (T) caffeineCache.asMap().get(key);
}
/**
* 根据key删除缓存
*
* @param key
*/
public void removeCacheByKey(String key) {
// 从缓存中删除
caffeineCache.asMap().remove(key);
}
}
启动方法类加上下面配置
@Bean
public Cache<String, Object> caffeineCache() {
return Caffeine.newBuilder()
// 设置最后一次写入或访问后经过固定时间过期-12小时失效
.expireAfterWrite(12*60*60, TimeUnit.SECONDS)
// 初始的缓存空间大小
.initialCapacity(100)
// 缓存的最大条数
.maximumSize(1024)
.build();
}