如何使用监听器实现 将mysql数据存入redis做初始化

文章目录

分析

《如何使用监听器实现 将mysql数据存入redis做初始化》

监听器

  • 必须实现ApplicationListener<ContextRefreshedEvent>接口,作为spring的监听器,并重写onApplicationEvent方法即可完成监听操作,也就是启动项目的时候会做的初始化操作
  • 在mysql数据库中查出所有文章对象
  • 将每个文章对象通过BeanUtils.copyProperties(st, vo);转化成vo对象
  • 将每个vo对象存进对应的redis的key中 作为value值
@Component
public class RedisDataInitListener implements ApplicationListener<ContextRefreshedEvent> { 
    @Autowired
    private IStrategyService strategyService;
    @Autowired
    private IStrategyStatisVORedisService strategyStatisVORedisService;
    // 当spring容器启动并初始化完成后执行
    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { 
        System.out.println("--------------攻略统计vo对象初始化-begin--------------------");
//1.查询mysql中所有攻略数据List<Strategy>
        List<Strategy> list = strategyService.list();
//2.封装成vo对象
        for (Strategy st : list) { 
// 如果存在对应的vo 则跳过此循环
            if (strategyStatisVORedisService.isVoExists(st.getId())){ 
                continue;
            }
            StrategyStatisVO vo = new StrategyStatisVO();
            BeanUtils.copyProperties(st, vo);
            vo.setStrategyId(st.getId());
// 添加到redis缓存中
            strategyStatisVORedisService.setStrategyVo(vo);
        }
        System.out.println("--------------攻略统计vo对象初始化-end--------------------");
    }
}

监听器使用到的方法

查询所有文章数据 –mysql操作

  • 这是mybatisPlus的业务层,直接使用自带的API即可查询
    List<Strategy> list = strategyService.list();

如果存在对应的vo 则跳过循环 –redis操作

 public boolean isVoExists(Long id) { 
        String key = RedisKeys.STRATEGY_STATIS_VO.join(id.toString());
        return template.hasKey(key);
    }

将vo添加到redis缓存中 –redis操作

  • 将文章对象转成vo对象,然后把vo对象放入redis中做初始化~
 public void setStrategyVo(StrategyStatisVO vo) { 
        // 拼接vo的key
        String key = RedisKeys.STRATEGY_STATIS_VO.join(vo.getStrategyId().toString());
// 更新vo
        template.opsForValue().set(key, JSON.toJSONString(vo));
    }
    原文作者:Edric_豪
    原文地址: https://blog.csdn.net/EDT777/article/details/113005962
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞