SpringBoot 初始化基础数据一启动就加载到Redis

13 篇文章 0 订阅
11 篇文章 0 订阅

       我们之前的做法都是经常查询基础,其实这些数据没有经常操作增改删等的话,我们可以查询一次就好然后放到redis变好。这时就有人有疑问了,那如果喔改动了,岂不是用不到了新的了。如果是这样的话你设置一个时效性。比如你设置时效性为每天12点或者一周、一个月等等清除redis,根据你自己需求而定,然后重新加载新的到redis中。首先你载入redis做个判断,避免重复加载。你先判断能不能拿到从redis中,如果不能拿到则查询放入redis中,否则不需要查询数据库。有的人说为啥启动就要加载初始化数据呢,我登陆后加载不好么,之前喔也是这么做,后面喔才发现这个会业务代码,更快,这些不经常操作的数据,我们一开始加载的话,就不会我们操作业务去操作,从而也可以说提高了点性能吧为了业务代码。话不多说上代码,目前提供两种方法。

一、启动类实现 CommandLineRunner 


@SpringBootApplication
public class   Zkt5gBuAdminApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(Zkt5gBuAdminApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        initData()
    }

    @Autowired
    private XXXXService XXXService;

    
    private void  initData(){
        XXXService.xxxfuncation();
    } 
}

二、用注解形式进行加载 @PostConstruct ,先创建一个类 RedisInitDataRunner 

@Configuration
public class RedisInitDataRunner {

    @Autowired
    private xxxService xxxService;
    /**
     * 创建线程池,默认10个线程
     */
    public static final ExecutorService pool = Executors.newFixedThreadPool(10);

    /**
     * 初始化数据
     */
    @PostConstruct
    public void initData() {
        pool.execute(new Runnable() {
            @Override
            public void run() {
                xxxService.xxxfuncation();
            }
        });
    }
}

写的不是很好有不好的地方欢迎指出。谢谢,也希望能够帮得到需要帮助的人

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值