Spring Cache是Spring框架提供的一个抽象层,用于简化缓存的使用。Redis是一种开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。在Spring Cache中使用Redis可以提高应用程序性能。

首先我们需要在项目中引入相关依赖。对于Maven项目,在pom.xml文件中添加以下依赖:

<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>

然后我们需要配置Redis连接信息和CacheManager,在application.properties或application.yml文件里添加以下配置:

# Redis连接信息
spring.redis.host=your_redis_host
spring.redis.port=your_redis_port

# 如果有密码则需要配置密码项:
# spring.redis.password=your_redis_password

接下来在Java代码里创建一个CacheManager Bean,并设置默认过期时间:


@Configuration
@EnableCaching // 启动缓存功能 
public class RedisConfig {

  @Autowired 
  private RedisConnectionFactory connectionFactory;

  @Bean 
  public CacheManager cacheManager() {
      // 使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
      Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);
  
      ObjectMapper mapper = new ObjectMapper();
      mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  
      serializer.setObjectMapper(mapper);

      // 配置redis缓存管理对象
      RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
          .entryTtl(Duration.ofHours(1)) // 设置缓存有效期一小时
          .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(serializer))
          .disableCachingNullValues(); 

      return RedisCacheManager.builder(connectionFactory)
              .cacheDefaults(config)
              .build();
  }
}

在上述代码中,我们设置了默认的过期时间为1小时。如果你想为不同的缓存设置不同的过期时间,你可以在创建RedisCacheManager时使用initialCacheConfigurations方法来指定:

Map<String, RedisCacheConfiguration> configMap = new HashMap<>();
configMap.put("cacheName1", config.entryTtl(Duration.ofMinutes(10)));
configMap.put("cacheName2", config.entryTtl(Duration.ofMinutes(30)));

return RedisCacheManager.builder(connectionFactory)
        .withInitialCacheConfigurations(configMap)
        .build();

最后,在需要使用缓存的方法上添加@Cachable注解:


@Service 
public class SomeService {

  @Cachable(value="cacheName1", key="#id") 
  public SomeObject getSomeObject(String id) {
    // ...
  }
}

以上就是Spring Cache和Redis结合使用,并配置过期时间的基本步骤。这样配置后,Spring会自动处理数据读取和写入到Redis中,并且会根据我们设定好的规则自动处理数据过期问题。


海外免备案云服务器链接:www.tsyvps.com

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2023 年 09 月 25 日
如果觉得我的文章对你有用,请随意赞赏