Spring Cache與Redis的集成主要有兩種方式:
@Cacheable
注解:在這種方式下,你需要在配置類中定義一個CacheManager
bean,通常使用RedisCacheManager
實(shí)現(xiàn)。然后,在需要緩存的方法上添加@Cacheable
注解,并指定緩存名稱。當(dāng)方法被調(diào)用時,Spring會自動檢查緩存中是否存在該方法的返回值。如果存在,則直接返回緩存值;如果不存在,則調(diào)用方法并將結(jié)果存儲在緩存中。
示例:
@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) {
// 從數(shù)據(jù)庫或其他數(shù)據(jù)源獲取用戶信息
return user;
}
}
Spring Boot提供了自動配置功能,可以簡化Spring Cache與Redis的集成過程。你只需要在application.properties
或application.yml
文件中配置Redis連接信息,Spring Boot會自動創(chuàng)建CacheManager
bean并配置緩存。
示例(application.properties):
spring.redis.host=localhost
spring.redis.port=6379
示例(application.yml):
spring:
redis:
host: localhost
port: 6379
在這種方式下,你無需手動添加@Cacheable
注解,Spring Boot會自動為你的方法添加緩存。你可以通過在方法參數(shù)上添加@CacheEvict
、@CachePut
等注解來實(shí)現(xiàn)緩存更新、刪除等操作。
總之,這兩種方式都可以實(shí)現(xiàn)Spring Cache與Redis的集成,你可以根據(jù)自己的需求和喜好選擇合適的方式。