java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot将需要数据添加到redis缓存

SpringBoot项目启动时如何将需要数据添加到redis缓存

作者:!)>_<)!

文章介绍了使用Java注解@PostConstruct进行项目启动时加载,并使用Spring和Redis进行数据缓存的操作,通过`setCacheObject`方法将数据存储到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();
    }

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文