几个主要的概念&常用缓存注解#

本文介绍了Spring Boot中常用的缓存注解,包括@Cacheable、@CacheEvict、@CachePut等,详细讲解了它们的作用、参数及使用场景。@Cacheable用于方法调用前检查缓存,@CacheEvict用于清除缓存,@CachePut则在方法执行后更新缓存。此外,文章还提到了@CacheConfig用于简化类级别的缓存配置。
摘要由CSDN通过智能技术生成

  几个主要的概念&常用缓存注解#
  
  名称    解释
  
  Cache    缓存接口,主要实现由 RedisChache, EhCacheCachem , ConcurrentMapCache
  
  CacheManager    缓存管理器,管理存放着不同类型的缓存 Cache 组件
  
  @Cacheable    加在方法上,根据方法的请求参数对结果进行缓存
  
  @CacheEvict    清空缓存
  
  @CachePut    保证方法被调用,又希望对方法的结果进行缓存
  
  @EnableCaching    添加在启动类上,表示开始缓存
  
  @keyGenerator    缓存数据时key生成策略
  
  serialize    混存数据时,value的序列化策略
  
  @Cacheable#
  
  上手使用#
  
  第一步:
  
  开启基于注解的缓存 @EnableCaching
  
  第二步:
  
  使用缓存注解@Cacheable
  
  Copy
  
  @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Cacheable { @AliasFor("cacheNames") String[] value() default {}; @AliasFor("value") String[] cacheNames() default {}; String key() default ""; String keyGenerator() default ""; String cacheManager() default ""; String cacheResolver() default ""; String condition() default ""; String unless() default ""; boolean sync() default false; }
  
  value 和 cacheNames 作用一样,都是在指定缓存的名字, 接收一个数组,可以指定多个缓存
  
  key, 指定当前这条数据在缓存中的唯一标识,支持SPEL表达式,默认是方法的参数值
  
  最好都提前确定好使用哪个key
  
  keyGenerator, 指定key的生成策略
  
  Copy
  
  // 自定义key的生成器 @Configuration public class MyCacheConfig { @Bean("myKeyGenerator") public KeyGenerator keyGenerator() { return new KeyGenerator() { @Override public Object generate(Object o, Method method, Object... objects) { return method.getName() + "[" + Arrays.asList(objects).toString() + "]"; } }; } } // 使用 @Cacheable(cacheNames = "dept",key = "#id",keyGenerator = "myKeyGenerator")
  
  一般key和keyGenerator二选一就行
  
  cacheManager, 指定缓存管理器
  
  cacheResolver, 指定缓存解析器
  
  condition, 当条件为ture时, 进行缓存支持SPEL表达式
  
  Copy
  
  当id>0时,缓存 @Cacheable(cacheNames = "dept",key = "#id",condition = "#id>0") 使用and添加更多的条件 @Cacheable(cacheNames = "dept",key = "#id",condition = "#id>0 and #id<10")
  
  unless, 当条件为true时, 不进行缓存支持SPEL表达式
  
  Copy
  
  当结果为空时,不缓存 @Cacheable(cacheNames = "dept",key = "#id",unless="#result == null")
  
  sync, 异步缓存
  
  异步模式下,不支持 unless
  
  默认的缓存配置#
  
  在诸多的缓存自动配置类中, SpringBoot默认装配的是SimpleCacheConfigguration, 他使用的CacheManager是 CurrentMapCacheManager, 使用 CurrentMap当底层的数据结构,按照Cache的名字查询出Cache, 每一个Cache中存在多个k-v键值对,缓存值
  
  几个主要的概念&常用缓存注解#
  
  名称    解释
  
  Cache    缓存接口,主要实现由 RedisChache, EhCacheCachem , ConcurrentMapCache
  
  CacheManager    缓存管理器,管理存放着不同类型的缓存 Cache 组件
  
  @Cacheable    加在方法上,根据方法的请求参数对结果进行缓存
  
  @CacheEvict    清空缓存
  
  @CachePut    保证方法被调用,又希望对方法的结果进行缓存
  
  @EnableCaching    添加在启动类上,表示开始缓存
  
  @keyGenerator    缓存数据时key生成策略
  
  serialize    混存数据时,value的序列化策略
  
  @Cacheable#
  
  上手使用#
  
  第一步:
  
  开启基于注解的缓存 @EnableCaching
  
  第二步:
  
  使用缓存注解@Cacheable
  
  Copy
  
  @Target({E

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值