Java 杂谈java专题应用开发与调优

spring的缓存使用

2018-08-10  本文已影响3人  H_Man

工作中用的缓存首选是redis,如果程序中需要用到二级缓存,则会选择google的二级缓存Guva Cache
spring3.1之后就引入了基于注解的缓存技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果。

使用方法:

@Cacheable

主要针对方法配置,能够根据方法的请求参数对其结果进行缓存

//若缓存中没有,当userId大于0时将从数据库中查询到的结果存入缓存
@Cacheable(value = "level", key = "'user_level_'+#userId,condition = "#userId>0")
    @Override
    public LevelInfoBean getUserLevelInfo(int userId) {
        LevelInfoBean levelInfoBean = new LevelInfoBean();
        //TODO query in db
        return levelInfoBean;
    }
@CachePut

主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,与Cacheable 不同的是,它每次都会触发真实方法的调用

//每次给用户增加经验之后将新对象放回缓存
@CachePut(value = "level", key = "'user_level'+#userId)
    @Override
    public LevelInfoBean addUserLevelScore(int userId, long score) {
        mapper.updateUserLevel(userId, score);
        return this.getUserLevelInfo(userId, type);
    }
@CacheEvict
上一篇下一篇

猜你喜欢

热点阅读