使用@Cacheable注解完成redis缓存

@Cacheable是spring自带的缓存注解,它支持redis的缓存,接下来就让我们看看它的使用方法吧。

第一步:启动类上开启缓存支持

在启动类上写上这个注解,不然缓存是不会得到支持的。

@EnableCaching

第二步:在对应的方法上注解,并填上属性

value是必须填写的,是方法执行的时候找到缓存的关键,key是缓存的键值可以为空。

 // 缓存注解
@Cacheable(value = "product:seckill",key = "'list'")
@Override
public List<PromotionProductVo> 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 - 逝年的我们 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小海海不怕困难

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值