提交 e4172616 编写于 作者: zhouweidong's avatar zhouweidong

修复缓存allEntries

上级 26e74698
...@@ -11,6 +11,7 @@ import org.springframework.data.redis.core.RedisTemplate; ...@@ -11,6 +11,7 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter; import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.util.ObjectUtils;
import java.util.Map; import java.util.Map;
import ${pub.getPKGCodeName()}.util.cache.cache.LayeringCache; import ${pub.getPKGCodeName()}.util.cache.cache.LayeringCache;
import ${pub.getPKGCodeName()}.util.enums.RedisChannelTopic; import ${pub.getPKGCodeName()}.util.enums.RedisChannelTopic;
...@@ -37,20 +38,25 @@ public class RedisMessageListener extends MessageListenerAdapter { ...@@ -37,20 +38,25 @@ public class RedisMessageListener extends MessageListenerAdapter {
if(result instanceof Map){ if(result instanceof Map){
map= (Map<String, Object>) result; map= (Map<String, Object>) result;
} }
if(StringUtils.isEmpty(map)|| (!map.containsKey("cacheName"))|| (!map.containsKey("key"))){ if(StringUtils.isEmpty(map)|| (!map.containsKey("cacheName"))){
log.debug("解析缓存数据失败,无法获取指定值!"); log.debug("解析缓存数据失败,无法获取指定值!");
return ; return ;
} }
log.debug("redis消息订阅者接收到频道【{}】发布的消息。消息内容:{}", channelTopic.getChannelTopicStr(), result.toString()); log.debug("redis消息订阅者接收到频道【{}】发布的消息。消息内容:{}", channelTopic.getChannelTopicStr(), result.toString());
String cacheName = (String) map.get("cacheName"); String cacheName = (String) map.get("cacheName");
Object key = map.get("key");
Cache cache = cacheManager.getCache(cacheName);// 根据缓存名称获取多级缓存 Cache cache = cacheManager.getCache(cacheName);// 根据缓存名称获取多级缓存
if (cache != null && cache instanceof LayeringCache) { // 判断缓存是否是多级缓存 if (cache != null && cache instanceof LayeringCache) { // 判断缓存是否是多级缓存
switch (channelTopic) { switch (channelTopic) {
case REDIS_CACHE_DELETE_TOPIC: // 获取一级缓存,并删除一级缓存数据 case REDIS_CACHE_DELETE_TOPIC: // 获取一级缓存,并删除一级缓存数据
((LayeringCache) cache).getFirstCache().evict(key); Object cacheKey = map.get("key");
((LayeringCache) cache).getSecondCache().evict(key); if(!ObjectUtils.isEmpty(cacheKey)){
log.debug("同步删除缓存{}数据,key:{},", cacheName, key.toString()); ((LayeringCache) cache).getFirstCache().evict(cacheKey);
((LayeringCache) cache).getSecondCache().evict(cacheKey);
log.debug("同步删除缓存{}数据,key:{},", cacheName, cacheKey.toString());
}
else{
log.debug("同步删除缓存失败,{}缓存键值为空!",cacheName);
}
break; break;
case REDIS_CACHE_CLEAR_TOPIC:// 获取一级缓存,并删除一级缓存数据 case REDIS_CACHE_CLEAR_TOPIC:// 获取一级缓存,并删除一级缓存数据
((LayeringCache) cache).getFirstCache().clear(); ((LayeringCache) cache).getFirstCache().clear();
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册