Redis在SpringBoot项目中的应用

发布时间 2023-06-01 00:15:23作者: wzh_Official

在项目中使用redis作为缓存,提高用户访问速度。

实现思路

  • 保存缓存:当用户进行页面访问时,前端会向后端发送请求。后端则会向数据库中获取数据,此时我们在请求向数据库获取数据之前先从redis缓存中尝试获取数据,如果redis缓存中存在我们需要的数据,即可直接返回。如果不存在,则在请求向数据库获取完数据后,将获取到的数据再保存一份到redis缓存中。
  • 清理缓存:当后台管理员对数据进行修改,新增,删除的操作后,为保证用户获取到的数据的准确性。就需要对redis缓存中的数据进行清除。

代码实现
1.引入依赖

点击查看代码
<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>2.3.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.3.9.RELEASE</version>
        </dependency>
2. 配置application.yml
点击查看代码
spring:
  application:
    name: Reggie
  #Redis相关配置
  redis:
    host: localhost
    port: 6379
    database: 0 #操作0号数据库
    jedis:
      pool:
        max-active: 8 #最大连接数
        max-wait: 1ms #连接池最大阻塞等待时间
        max-idle: 4 #连接池中的最大空闲连接
        min-idle: 0 #连接池中的最小空闲连接
3. 提供配置类
点击查看代码
@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());
        //注意: 一般值不会设置序列化器为StringRedisSerializer,因为后期有可能值位置存储的数据为非String类型!
        //redisTemplate.setValueSerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());

        redisTemplate.setConnectionFactory(connectionFactory);

        return redisTemplate;
    }
}
4. 代码测试 保存缓存:

清理缓存:清理缓存有两种策略,一种是根据分类清除,另一种是全部清除