Spring Cache与Redis的集成主要有两种方式:
@Cacheable
注解:在这种方式下,你需要在配置类中定义一个CacheManager
bean,通常使用RedisCacheManager
实现。然后,在需要缓存的方法上添加@Cacheable
注解,并指定缓存名称。当方法被调用时,Spring会自动检查缓存中是否存在该方法的返回值。如果存在,则直接返回缓存值;如果不存在,则调用方法并将结果存储在缓存中。
示例:
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(10));
return RedisCacheManager
.builder(redisConnectionFactory)
.cacheDefaults(redisCacheConfiguration)
.build();
}
}
@Service
public class UserService {
@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
// 从数据库或其他数据源获取用户信息
return user;
}
}
Spring Boot提供了自动配置功能,可以简化Spring Cache与Redis的集成过程。你只需要在application.properties
或application.yml
文件中配置Redis连接信息,Spring Boot会自动创建CacheManager
bean并配置缓存。
示例(application.properties):
spring.redis.host=localhost
spring.redis.port=6379
示例(application.yml):
spring:
redis:
host: localhost
port: 6379
在这种方式下,你无需手动添加@Cacheable
注解,Spring Boot会自动为你的方法添加缓存。你可以通过在方法参数上添加@CacheEvict
、@CachePut
等注解来实现缓存更新、删除等操作。
总之,这两种方式都可以实现Spring Cache与Redis的集成,你可以根据自己的需求和喜好选择合适的方式。