|
|
|
@ -121,10 +121,7 @@ public abstract class BaseRestController <T extends BaseEntity, E extends ApiWra
|
|
|
|
|
|
|
|
|
|
// 防止缓存穿透判断
|
|
|
|
|
boolean hasNilFlag = CacheUtil.hasNilFlag(cacheKey);
|
|
|
|
|
if(hasNilFlag){
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!hasNilFlag) {
|
|
|
|
|
try {
|
|
|
|
|
// 分布式加锁
|
|
|
|
|
if(!DistributedLockUtil.lock(cacheKey)){
|
|
|
|
@ -149,6 +146,7 @@ public abstract class BaseRestController <T extends BaseEntity, E extends ApiWra
|
|
|
|
|
// 这里会 同步更新到本地Ehcache 和 Redis缓存
|
|
|
|
|
// 如果其他服务器缓存也丢失了 则 回去Redis拉取
|
|
|
|
|
CacheUtil.put(cacheKey, model);
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
log.error(e.getMessage(), e);
|
|
|
|
@ -160,10 +158,8 @@ public abstract class BaseRestController <T extends BaseEntity, E extends ApiWra
|
|
|
|
|
if(model == null){
|
|
|
|
|
// 设置空变量 用于防止穿透判断
|
|
|
|
|
CacheUtil.putNilFlag(cacheKey);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
// 如果没开启缓存 则直接查询数据库
|
|
|
|
|
model = WrapperUtil.transformInstance(IService.get(id), modelClazz);
|
|
|
|
|