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的集成,你可以根據自己的需求和喜好選擇合適的方式。