Skip to content

Commit 328e8d3

Browse files
authored
Merge pull request #244 from FunD-StockProject/chore/redis-branch
Chore: redis config 설정 변경
2 parents 1ea7a37 + 987b0ab commit 328e8d3

1 file changed

Lines changed: 16 additions & 5 deletions

File tree

src/main/java/com/fund/stockProject/global/config/RedisConfig.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@
1212
import org.springframework.data.redis.cache.RedisCacheManager;
1313
import org.springframework.data.redis.connection.RedisConnectionFactory;
1414
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
15+
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
1516
import org.springframework.data.redis.serializer.RedisSerializationContext;
17+
import org.springframework.data.redis.serializer.RedisSerializer;
1618
import org.springframework.data.redis.serializer.StringRedisSerializer;
1719

18-
import com.fasterxml.jackson.annotation.JsonTypeInfo;
1920
import com.fasterxml.jackson.databind.ObjectMapper;
20-
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
2121
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
22+
import com.fund.stockProject.stock.dto.response.StockInfoResponse;
2223

2324
@Configuration
2425
@EnableCaching
@@ -52,25 +53,35 @@ public RedisCacheConfiguration defaultCacheConfiguration(ObjectMapper redisCache
5253
@Bean
5354
public CacheManager cacheManager(
5455
RedisConnectionFactory connectionFactory,
55-
RedisCacheConfiguration defaultCacheConfiguration) {
56+
RedisCacheConfiguration defaultCacheConfiguration,
57+
ObjectMapper redisCacheObjectMapper) {
5658

5759
Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<>();
5860

61+
@SuppressWarnings("unchecked")
62+
RedisSerializer<Object> stockInfoSerializer =
63+
(RedisSerializer<Object>) new Jackson2JsonRedisSerializer<>(StockInfoResponse.class);
64+
((Jackson2JsonRedisSerializer<?>) stockInfoSerializer).setObjectMapper(redisCacheObjectMapper);
65+
RedisSerializationContext.SerializationPair<Object> stockInfoSerializationPair =
66+
RedisSerializationContext.SerializationPair.fromSerializer(stockInfoSerializer);
67+
5968
// 숏뷰 추천: 5분 캐시 (사용자별 추천 결과)
6069
cacheConfigurations.put("shortview",
6170
defaultCacheConfiguration.entryTtl(Duration.ofMinutes(5)));
6271

6372
// 실시간 가격: 30초 캐시 (변동성 높음)
6473
cacheConfigurations.put("stockPrice",
65-
defaultCacheConfiguration.entryTtl(Duration.ofSeconds(30)));
74+
defaultCacheConfiguration.entryTtl(Duration.ofSeconds(30))
75+
.serializeValuesWith(stockInfoSerializationPair));
6676

6777
// 주식 정보: 1시간 캐시 (기본 정보, 변동 적음)
6878
cacheConfigurations.put("stockInfo",
6979
defaultCacheConfiguration.entryTtl(Duration.ofHours(1)));
7080

7181
// 검색 결과: 30분 캐시
7282
cacheConfigurations.put("searchResult",
73-
defaultCacheConfiguration.entryTtl(Duration.ofMinutes(30)));
83+
defaultCacheConfiguration.entryTtl(Duration.ofMinutes(30))
84+
.serializeValuesWith(stockInfoSerializationPair));
7485

7586
// 유효한 주식 목록: 1시간 캐시
7687
cacheConfigurations.put("validStocks",

0 commit comments

Comments
 (0)