From f85f74353e8d8a75dc306c3abcecedb0ac7f7556 Mon Sep 17 00:00:00 2001 From: win-luck Date: Thu, 22 Aug 2024 12:04:28 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[chore]=20Redis=20Key=EB=B3=84=20=EC=9D=98?= =?UTF-8?q?=EB=AF=B8=20=EB=AA=85=ED=99=95=ED=95=98=EA=B2=8C=20=ED=91=9C?= =?UTF-8?q?=ED=98=84=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95=20(#1?= =?UTF-8?q?25)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/fcfs/service/FcfsManageService.java | 4 ++-- .../orange/event/fcfs/util/FcfsUtil.java | 18 ++++++++++-------- .../event/fcfs/FcfsManageServiceTest.java | 5 ++--- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/hyundai/softeer/orange/event/fcfs/service/FcfsManageService.java b/src/main/java/hyundai/softeer/orange/event/fcfs/service/FcfsManageService.java index 94cea643..dd430eec 100644 --- a/src/main/java/hyundai/softeer/orange/event/fcfs/service/FcfsManageService.java +++ b/src/main/java/hyundai/softeer/orange/event/fcfs/service/FcfsManageService.java @@ -49,13 +49,13 @@ public void registerFcfsEvents() { // redis에 저장된 모든 선착순 이벤트의 당첨자 정보를 DB로 이관 @Transactional public void registerWinners() { - Set fcfsIds = stringRedisTemplate.keys("*:fcfs"); + Set fcfsIds = stringRedisTemplate.keys("*:count"); if (fcfsIds == null || fcfsIds.isEmpty()) { return; } for(String fcfsId : fcfsIds) { - String eventId = fcfsId.replace(":fcfs", ""); + String eventId = fcfsId.replace(":count", "").replace("fcfs:", ""); Set userIds = stringRedisTemplate.opsForZSet().range(FcfsUtil.winnerFormatting(eventId), 0, -1); if(userIds == null || userIds.isEmpty()) { return; diff --git a/src/main/java/hyundai/softeer/orange/event/fcfs/util/FcfsUtil.java b/src/main/java/hyundai/softeer/orange/event/fcfs/util/FcfsUtil.java index ff32424c..04fd1d02 100644 --- a/src/main/java/hyundai/softeer/orange/event/fcfs/util/FcfsUtil.java +++ b/src/main/java/hyundai/softeer/orange/event/fcfs/util/FcfsUtil.java @@ -6,38 +6,40 @@ @NoArgsConstructor(access = AccessLevel.PRIVATE) public class FcfsUtil { - // 선착순 이벤트의 PK를 간접적으로 보관하는 eventId tag + private static final String FCFS_PREFIX = "fcfs:"; + + // 참여할 선착순 이벤트의 식별자를 간접적으로 보관하는 tag, key는 선착순 이벤트와 연결된 eventMetadata의 eventId이다. public static String eventIdFormatting(String key) { - return key + ":eventId"; + return FCFS_PREFIX + key + ":eventId"; } // 선착순 이벤트 tag public static String keyFormatting(String key) { - return key + ":fcfs"; + return FCFS_PREFIX + key + ":count"; } // 선착순 이벤트 시작 시각 tag public static String startTimeFormatting(String key) { - return key + ":start"; + return FCFS_PREFIX + key + ":start"; } // 선착순 이벤트 마감 여부 tag public static String endFlagFormatting(String key) { - return key + ":end"; + return FCFS_PREFIX + key + ":end"; } // 선착순 이벤트 당첨자 tag public static String winnerFormatting(String key) { - return key + ":winner"; + return FCFS_PREFIX + key + ":winner"; } // 선착순 이벤트 참여자 tag public static String participantFormatting(String key) { - return key + ":participant"; + return FCFS_PREFIX + key + ":participant"; } // 선착순 이벤트 정답 tag public static String answerFormatting(String key) { - return key + ":answer"; + return FCFS_PREFIX + key + ":answer"; } } diff --git a/src/test/java/hyundai/softeer/orange/event/fcfs/FcfsManageServiceTest.java b/src/test/java/hyundai/softeer/orange/event/fcfs/FcfsManageServiceTest.java index d889bcb6..8e7a2f00 100644 --- a/src/test/java/hyundai/softeer/orange/event/fcfs/FcfsManageServiceTest.java +++ b/src/test/java/hyundai/softeer/orange/event/fcfs/FcfsManageServiceTest.java @@ -25,7 +25,6 @@ import org.springframework.data.redis.core.*; import java.time.Instant; -import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; @@ -98,7 +97,7 @@ void registerFcfsEventsTest() { @Test void registerWinnersTest() { // given - given(stringRedisTemplate.keys("*:fcfs")).willReturn(Set.of("1:fcfs")); + given(stringRedisTemplate.keys("*:count")).willReturn(Set.of("1:count")); given(stringRedisTemplate.opsForZSet()).willReturn(zSetOperations); given(zSetOperations.range(FcfsUtil.winnerFormatting(fcfsEventId.toString()), 0, -1)) .willReturn(Set.of(eventUser.getUserId())); @@ -109,7 +108,7 @@ void registerWinnersTest() { fcfsManageService.registerWinners(); // then - verify(stringRedisTemplate).keys("*:fcfs"); + verify(stringRedisTemplate).keys("*:count"); verify(zSetOperations).range(FcfsUtil.winnerFormatting(fcfsEventId.toString()), 0, -1); verify(fcfsEventRepository).findById(fcfsEventId); verify(eventUserRepository).findAllByUserId(List.of(eventUser.getUserId())); From 80aebc4096b3bd1637147f02fcd9ce2cf10f33b7 Mon Sep 17 00:00:00 2001 From: win-luck Date: Thu, 22 Aug 2024 12:14:19 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[chore]=20=EC=A4=91=EB=B3=B5=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EB=A9=94=EC=84=9C=EB=93=9C?= =?UTF-8?q?=EB=A1=9C=20=EB=B6=84=EB=A6=AC=20(#125)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orange/event/fcfs/util/FcfsUtil.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/main/java/hyundai/softeer/orange/event/fcfs/util/FcfsUtil.java b/src/main/java/hyundai/softeer/orange/event/fcfs/util/FcfsUtil.java index 04fd1d02..cf6a13db 100644 --- a/src/main/java/hyundai/softeer/orange/event/fcfs/util/FcfsUtil.java +++ b/src/main/java/hyundai/softeer/orange/event/fcfs/util/FcfsUtil.java @@ -8,38 +8,36 @@ public class FcfsUtil { private static final String FCFS_PREFIX = "fcfs:"; - // 참여할 선착순 이벤트의 식별자를 간접적으로 보관하는 tag, key는 선착순 이벤트와 연결된 eventMetadata의 eventId이다. public static String eventIdFormatting(String key) { - return FCFS_PREFIX + key + ":eventId"; + return formatKey(key, "eventId"); } - // 선착순 이벤트 tag public static String keyFormatting(String key) { - return FCFS_PREFIX + key + ":count"; + return formatKey(key, "count"); } - // 선착순 이벤트 시작 시각 tag public static String startTimeFormatting(String key) { - return FCFS_PREFIX + key + ":start"; + return formatKey(key, "start"); } - // 선착순 이벤트 마감 여부 tag public static String endFlagFormatting(String key) { - return FCFS_PREFIX + key + ":end"; + return formatKey(key, "end"); } - // 선착순 이벤트 당첨자 tag public static String winnerFormatting(String key) { - return FCFS_PREFIX + key + ":winner"; + return formatKey(key, "winner"); } - // 선착순 이벤트 참여자 tag public static String participantFormatting(String key) { - return FCFS_PREFIX + key + ":participant"; + return formatKey(key, "participant"); } - // 선착순 이벤트 정답 tag public static String answerFormatting(String key) { - return FCFS_PREFIX + key + ":answer"; + return formatKey(key, "answer"); + } + + // 공통 로직을 처리하는 메서드 + private static String formatKey(String key, String suffix) { + return FCFS_PREFIX + key + ":" + suffix; } }