Skip to content

Commit 8ded507

Browse files
committed
feat: spring cache 설정
1 parent aef1ca8 commit 8ded507

3 files changed

Lines changed: 26 additions & 0 deletions

File tree

apps/commerce-api/src/main/java/com/loopers/CommerceApiApplication.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@
44
import org.springframework.boot.SpringApplication;
55
import org.springframework.boot.autoconfigure.SpringBootApplication;
66
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
7+
import org.springframework.cache.annotation.EnableCaching;
8+
79
import java.util.TimeZone;
810

911
@ConfigurationPropertiesScan
1012
@SpringBootApplication
13+
@EnableCaching
1114
public class CommerceApiApplication {
1215

1316
@PostConstruct

modules/redis/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55

66
dependencies {
77
api("org.springframework.boot:spring-boot-starter-data-redis")
8+
implementation("org.springframework.boot:spring-boot-starter-cache")
89

910
testFixturesImplementation("com.redis:testcontainers-redis")
1011
}

modules/redis/src/main/java/com/loopers/config/redis/RedisConfig.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,17 @@
77
import org.springframework.context.annotation.Bean;
88
import org.springframework.context.annotation.Configuration;
99
import org.springframework.context.annotation.Primary;
10+
import org.springframework.data.redis.cache.RedisCacheConfiguration;
11+
import org.springframework.data.redis.cache.RedisCacheManager;
1012
import org.springframework.data.redis.connection.RedisStaticMasterReplicaConfiguration;
1113
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
1214
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
1315
import org.springframework.data.redis.core.RedisTemplate;
16+
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
17+
import org.springframework.data.redis.serializer.RedisSerializationContext;
1418
import org.springframework.data.redis.serializer.StringRedisSerializer;
1519

20+
import java.time.Duration;
1621
import java.util.List;
1722
import java.util.function.Consumer;
1823

@@ -98,4 +103,21 @@ private <K,V> RedisTemplate<K,V> defaultRedisTemplate(
98103
template.setConnectionFactory(connectionFactory);
99104
return template;
100105
}
106+
107+
@Bean
108+
public RedisCacheManager redisCacheManager(
109+
@Qualifier("redisConnectionMaster") LettuceConnectionFactory masterConnectionFactory
110+
) {
111+
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
112+
.entryTtl(Duration.ofMinutes(10))
113+
.serializeKeysWith(
114+
RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
115+
.serializeValuesWith(
116+
RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()))
117+
.disableCachingNullValues();
118+
119+
return RedisCacheManager.builder(masterConnectionFactory)
120+
.cacheDefaults(config)
121+
.build();
122+
}
101123
}

0 commit comments

Comments
 (0)