spring-cache-manager的实践

Spring boot 和 Redis缓存说明文档

Spring Cache是基于AOP切面和注解来实现缓存的。核心类为CacheCacheManager
前者用来定义缓存的一些操作,后者则是Spring的核心缓存SPI(Service Provider Interface),
管理第三方缓存实现统一接入。关系图如下:

cache

缓存的注解介绍
- @EnableCaching 启动cache功能
- @CacheConfig 类级别的缓存注解,允许共享缓存名称。
- @Caching 将多种缓存操作分组(如果一个方法有多个缓存操作可以使用)
- @Cacheable 查询缓存
- @CacheEvict 移除缓存
- @CacahePut 更新缓存


       /**
           * 根据id来更新记录
           * @param histories
           */
          @CachePut(key = "'histories'.concat(#histories.id.toString())")
          @Override
          public void updateHistories(Histories histories) {
              try{
                  historiesMapper.updateHistories(histories);
              }catch (DataAccessException e){
                  throw new ServiceException(e);
              }
          }

          /**
           * 根据id来查询记录
           * @param histories
           * @return
           */
          @Cacheable(key = "'histories'.concat(#histories.id.toString())")
          @Override
          public List<Histories> getHistories(Histories histories) {
              try{
                  return historiesMapper.getHistories(histories);
              }catch (DataAccessException e){
                  throw new ServiceException(e);
              }
          }

可在缓存中查询结果,是否缓存到

cacheResult

如果需要自定义缓存失效时间等,可以在CacheManager的实现类RedisCacheManager来自定义。
如:

    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate) {
        RedisCacheManager manager = new RedisCacheManager(redisTemplate);
        // 整体缓存过期时间
        manager.setDefaultExpiration(3600L);

        Map<String, Long> expiresMap = new HashMap<>();
        // 设置缓存过期时间。key和缓存过期时间,单位秒
        expiresMap.put("histories", 50l);
        manager.setExpires(expiresMap);
        return manager;
    }

下的redis-spring-example模块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值