凯发真人娱乐

spring缓存cache怎么用 -凯发真人娱乐

2023-12-12

这篇文章将为大家详细讲解有关spring缓存cache怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

spring缓存cache的使用

在spring配置文件中添加schema和spring对缓存注解的支持:



    
    

在spring配置文件中加入缓存管理器:

    
        
            
                
                      
            
        
    

然后在代码的service的impl层加上如下注解即可把数据缓存起来:

@cacheable(value="bannercache")

其中@cacheable表示spring将缓存该方法获取到的数据,(缓存是基于key-value方式实现的),key为该方法的参数,value为返回的数据,当你连续访问该方法时你会发现只有第一次会访问数据库. 其他次数只是查询缓存.减轻了数据库的压力.

当更新了数据库的数据,需要让缓存失效时,使用下面的注解:

这个注解表示让appcache缓存的所有数据都失效。

@cacheevict(value = "appcache", allentries = true)

springcache配置缓存存活时间

spring cache @cacheable本身不支持key expiration的设置,以下代码可自定义实现spring cache的expiration,针对redis、springboot2.0。

直接上代码:

@service
@configuration
public class customcachemng{
    private logger logger = loggerfactory.getlogger(this.getclass());
    // 指明自定义cachemanager的bean name
    @cacheable(value = "test",key = "'obj1'",cachemanager = "customcachemanager")
    public user cache1(){
        user user = new user().setid(1);
        logger.info("1");
        return user;
    }
    @cacheable(value = "test",key = "'obj2'")
    public user cache2(){
        user user = new user().setid(1);
        logger.info("2");
        return user;
    }
    
    // 自定义的cachemanager,实现存活2天
    @bean(name = "customcachemanager")
    public cachemanager cachemanager(
            redistemplate redistemplate) {
        rediscachewriter writer = rediscachewriter.lockingrediscachewriter(redistemplate.getconnectionfactory());
        rediscacheconfiguration config = rediscacheconfiguration.defaultcacheconfig().entryttl(duration.ofdays(2));
        return new rediscachemanager(writer, config);
    }
    
    // 提供默认的cachemanager,应用于全局
    @bean
    @primary
    public cachemanager defaultcachemanager(
            redistemplate redistemplate) {
        rediscachewriter writer = rediscachewriter.lockingrediscachewriter(redistemplate.getconnectionfactory());
        rediscacheconfiguration config = rediscacheconfiguration.defaultcacheconfig();
        return new rediscachemanager(writer, config);
    }
}

关于“spring缓存cache怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

网站地图