@Slf4j
public class GuavaUtil {
/**
* 清除缓存容量
* 当缓存容量达到配置最大容量时,Guava Cache会基于LRU算法清除缓存
*/
private static final int MAX_NUM = 100000;
/**
* 用户名和token缓存
* key-用户名value-token
*/
@SuppressWarnings("UnstableApiUsage")
private static Cache<String, Boolean> CACHE;
/**
* 添加token缓存
* @param tenantId 租户
* @param type 开关
* @return 商户号
*/
@SuppressWarnings("UnstableApiUsage")
public static String addCache(String tenantId, Boolean type) {
if (Objects.isNull(CACHE)) {
CACHE = CacheBuilder.newBuilder()
.maximumSize(MAX_NUM)
// 缓存项写入后多久过期
.expireAfterWrite(12, TimeUnit.HOURS)
.concurrencyLevel(8)
.build();
}
CACHE.put(tenantId, type);
return tenantId;
}
public static void clearCache(String tenantId) {
CACHE.invalidate(tenantId);
}
/**
* 从缓存中获取token
* @param
* @return 缓存
*/
@SuppressWarnings("UnstableApiUsage")
public static Boolean getCache(String tenantId) {
if (Objects.isNull(CACHE)) {
return null;
}
Boolean value = CACHE.getIfPresent(tenantId);
return value;
}
}
基于Guava的本地缓存
最新推荐文章于 2025-10-07 14:53:25 发布
987

被折叠的 条评论
为什么被折叠?



