实现方法:
修改service逻辑,首先先从redis中获取相关的值,如果不存在,则从mysql数据库中获取相关的值,并将相关数据存储到redis中。
public List<Dict> listByParentId(Long parentId) {
// 从redis中获取值
try{
List<Dict> dictList=(List<Dict>) redisTemplate.opsForValue().get("srb:core:dictList:"+parentId);
if(!dictList.isEmpty()){
return dictList;
}
}catch (Exception e){
e.printStackTrace();
log.info("redis服务器异常:"+ ExceptionUtils.getStackTrace(e));
}
// 从数据库中获取相关信息
QueryWrapper<Dict> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("parent_id",parentId);
List<Dict> dictList= dictMapper.selectList(queryWrapper);
//填充hasChildren字段
dictList.forEach(dict -> {
//判断当前字段是否有子节点
dict.setHasChildren(this.hasChildre(parentId));
});
// 将值存入redis中
redisTemplate.opsForValue().set("srb:core:dictList:"+parentId,dictList,10, TimeUnit.MINUTES);
return dictList;
}