将数据字典存入Redis

DictServiceImpl
注意:当redis服务器宕机时,我们不要抛出异常,要正常的执行后面的流程,使业务可以正常的运行

  1. @Resource
  2. private RedisTemplate redisTemplate;
  3. @Override
  4. public List<Dict> listByParentId(Long parentId) {
  5. //先查询redis中是否存在数据列表
  6. List<Dict> dictList = null;
  7. try {
  8. dictList = (List<Dict>)redisTemplate.opsForValue().get("srb:core:dictList:" + parentId);
  9. if(dictList != null){
  10. log.info("从redis中取值");
  11. return dictList;
  12. }
  13. } catch (Exception e) {
  14. log.error("redis服务器异常:" + ExceptionUtils.getStackTrace(e));//此处不抛出异常,继续执行后面的代码
  15. }
  16. log.info("从数据库中取值");
  17. dictList = baseMapper.selectList(new QueryWrapper<Dict>().eq("parent_id", parentId));
  18. dictList.forEach(dict -> {
  19. //如果有子节点,则是非叶子节点
  20. boolean hasChildren = this.hasChildren(dict.getId());
  21. dict.setHasChildren(hasChildren);
  22. });
  23. //将数据存入redis
  24. try {
  25. redisTemplate.opsForValue().set("srb:core:dictList:" + parentId, dictList, 5, TimeUnit.MINUTES);
  26. log.info("数据存入redis");
  27. } catch (Exception e) {
  28. log.error("redis服务器异常:" + ExceptionUtils.getStackTrace(e));//此处不抛出异常,继续执行后面的代码
  29. }
  30. return dictList;
  31. }