@Cacheable是spring自带的缓存注解,它支持redis的缓存,接下来就让我们看看它的使用方法吧。
第一步:启动类上开启缓存支持
在启动类上写上这个注解,不然缓存是不会得到支持的。
@EnableCaching
第二步:在对应的方法上注解,并填上属性
value是必须填写的,是方法执行的时候找到缓存的关键,key是缓存的键值可以为空。
// 缓存注解
@Cacheable(value = "https://www.it610.com/article/product:seckill",key = "'list'")
@Override
public List findPromotionSeckill() {}
第三步:配置缓存工具的序列化和注解的序列化
@Configuration
public class RedisConfig {
/**
* 配置RedisTemplate的序列化方式
*/
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(factory);
// 指定key的序列化方式:string
redisTemplate.setKeySerializer(RedisSerializer.string());
// 指定value的序列化方式:json
redisTemplate.setValueSerializer(RedisSerializer.json());
return redisTemplate;
}
/**
* 配置Redis缓存注解的value序列化方式
*/
@Bean
public RedisCacheConfiguration redisCacheConfiguration(){
RedisCacheConfiguration configuration =
RedisCacheConfiguration.defaultCacheConfig();
configuration = configuration.serializeValuesWith(
RedisSerializationContext.SerializationPair.fromSerializer(
RedisSerializer.json()
)
);
return configuration;
}
}
如果你想删除缓存可以使用@CacheEvict注解,使用示例:
其中cacheNames是@Cacheable的value值,allEntries是决定是否删除全部,true代表删除全部。
@CacheEvict(cacheNames = "product:seckill",allEntries = true)
@Override
public void updateTest() {}
注意事项:
1、@Cacheable必须开启缓存在启动类上@EnableCaching
2、返回的对象要实现缓存该对象是必须实现序列化接口的Serializable
3、@Cacheable不可用在私有方法上面,可以放在接口和具体的方法上面
4、@Cacheable这个注解是放在具体的方法上;
5、@CacheConfig这个注解只能放在类上代表这个类所有缓存的公共属性配置,比如value等非必须;
6、key = "#对象.属性"或者直接使用key = "#属性";直接读取的是方法形参内的参数属性或者对象;
7、key = "#对象.属性.concat('Hydrologydata')"
更多使用方法可以参考一下文章:
Spring 缓存——@Cacheable - 简书
spring对缓存的使用@Cacheable - 逝年的我们 - 博客园
【使用@Cacheable注解完成redis缓存】
推荐阅读
- 算法|阿里飞猪搜索技术的应用与创新
- 嵌入式|2017年电信业值得关注的7大颠覆性技术
- zookeeper|zookeeper-常用命令,集成springboot,分布式锁实现和原理 ,dock集群zookeeper搭建,
- 资讯|抖音开放平台,究竟开放了什么()
- 大数据|大数据lab4/hadoop&HBase
- 体系课-大数据工程师2022版2.0升级版fen享yun盘
- 数据库|2017 数据库大趋势(PostgreSQL 最受关注)
- 大数据|Virtural histology分析
- Linux|Centos8安装 Hadoop3 详细操作(含图文)