Spring Boot项目启动时将需要数据添加到redis缓存

Spring Boot项目启动时将需要数据添加到redis缓存


在项目中不可避免的会存在像字典、部门这样使用频率很大的数据,如果每次都从数据库中查取数据,势必会增加项目的负担,所以很多开源的后台管理系统都集成了redis。
这里记录一下自己对于将数据加载到redis使用的过程。

首先项目启动时加载:这里使用了一个Java注解@PostConstruct@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。

    @PostConstruct
    public void init(){
        loadingCache();
    }

loadingCache方法里就是添加缓存的代码,通过SpringUtils.getBean(RedisCache.class).setCacheObject(key,value)来添加缓存:

@Override
    public void loadingCache(){
        DvCode dvCode = new DvCode();
        List<DvCode> codeList = dvCodeMapper.selectDvCodeList(dvCode);
        codeList.stream().forEach(list->{
            SpringUtils.getBean(RedisCache.class).setCacheObject(Constants.NAME_KEY+list.getCode(),list.getName());
        });
    }

NAME_KEY是Constants里面添加的,是最终缓存到redis中的key值;

    /***
     code cache key
     */
    public static final String NAME_KEY = "code_name:";

这个时候就数据缓存到redis的操作就已经完成了,重新启动项目后,在redis数据库中就可以看到key为code_name的数据了。
那么怎么取用数据?redisCache.getCacheObject(getCacheKey2Name(code));

 public static String getCacheKey2Name(String configKey)
    {
        return Constants.NAME_KEY + configKey;
    }

最后添加一个清空缓存数据的方法:

	@Override
    public void clearAreaCodeCache(){
        Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(Constants.NAME_KEY + "*");
        SpringUtils.getBean(RedisCache.class).deleteObject(keys);
    }

那么如果我们在项目启动后更改了数据,又不想重新启动项目,有了添加和清空,这个问题就很好解决了:

	@DeleteMapping("/refreshCache")
    public AjaxResult refreshCache()
    {
        dvCodeService.resetDictCache();
        return AjaxResult.success();
    }

前端搞个按钮什么的,调用一下这个刷新缓存的接口就好啦。

新手上路,请多指教 \(>_<)/

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

!)>_<)!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值