几个主要的概念&常用缓存注解#
名称 解释
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
几个主要的概念&常用缓存注解#
最新推荐文章于 2023-10-31 23:54:35 发布
本文介绍了Spring Boot中常用的缓存注解,包括@Cacheable、@CacheEvict、@CachePut等,详细讲解了它们的作用、参数及使用场景。@Cacheable用于方法调用前检查缓存,@CacheEvict用于清除缓存,@CachePut则在方法执行后更新缓存。此外,文章还提到了@CacheConfig用于简化类级别的缓存配置。
摘要由CSDN通过智能技术生成