SpringBoot配置使用Redis缓存

本文介绍了如何在SpringBoot项目中配置并使用Redis作为缓存。内容包括添加相关依赖、编写配置类、启动类开启缓存注解,以及常用的@Cacheable、@CacheEvict和@CachePut注解的使用说明。还提到了缓存注解在同一个类内调用不生效的问题以及解决方案,并简单介绍了Redis的五大数据类型。
摘要由CSDN通过智能技术生成

1、添加依赖

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

2、编写配置类

@Configuration
public class RedisConfig extends CachingConfigurerSupport {
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory){
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        //默认的Key序列化器为:JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(connectionFactory);
        return redisTemplate;
    }
}

3、添加Redis配置

 4、启动类添加开启缓存注解支持

5、现在我们就可以在项目中使用Redis了。SpringBoot帮我们针对缓存的操作做了封装,我们可以直接使用注解来快速方便的使用redis,常用的有如下3个注解:

@Cacheable使用缓存
@CachePut更新缓存
@CacheEvict清理缓存

他们的参数基本都是一样的,只是功能有所不同,拿 @Cacheable 举例,他们的功能及参数如下:

参数介绍样例
value或cacheNames缓存名,用于区分不同的模块;在redis中的区别就是key前缀会增加缓存名@Cacheable(value="mycache")
key缓存的key,可以为空;需要指定key可以使用SpEL表达式编写;不指定则默认按照方法的所有参数进行组合

@Cacheable(value="testcache",key="#userName")

@Cacheable(value="testcache",key="#root.methodName")

condition缓存的条件,可以为空;使用SpEL编写,返回true则缓存数据@Cacheable(value="testcache",condition="#userName.length()>2")

 例:

为了方便获取入参中的数据,在参数key中的SpEL表达式中,SpringBoot默认提供了一个root对象。使用及解释见下表:

样例解释
#root.methodName当前被调用的方法名
#root.method当前被调用的方法
#root.target当前被调用的目标对象
#root.targetClass当前被调用的目标对象类

6、虽然SpringBoot提供了非常方便的注解供我们使用,但是请注意,由于注解的实现原理是通过代理对象来实现的,所以在同一个类中自己的方法A调用带缓存注解的方法B,此时注解是不会生效的,也就是缓存不会生效。那么有时候我们实际业务确实有这种需求怎么办?我们可以直接在类中注入SpringBoot提供的模板类来对redis进行操作。

@Autowired
private RedisTemplate redisTemplate;

7、Redis常见的五大数据类型

      String(字符串) 、list(列表)、set(集合)、hash(散列)、Zset(有序集合)

//1、操作字符串
redisTemplate.opsForValue();

//2、操作hash
redisTemplate.opsForHash();

//3、操作list
redisTemplate.opsForList();

//4、操作set
redisTemplate.opsForSet();

//5、操作有序set
redisTemplate.opsForZSet();

这样我们就实现了对缓存的操作,具体的方法操作非常简单易懂,网上资料也很多,这里就不过多赘述。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Monster.Xu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值