Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[chore] Redis Key Name 난잡한 상황 개선 (#129) #132

Merged
merged 2 commits into from
Aug 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,13 @@ public void registerFcfsEvents() {
// redis에 저장된 모든 선착순 이벤트의 당첨자 정보를 DB로 이관
@Transactional
public void registerWinners() {
Set<String> fcfsIds = stringRedisTemplate.keys("*:fcfs");
Set<String> 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<String> userIds = stringRedisTemplate.opsForZSet().range(FcfsUtil.winnerFormatting(eventId), 0, -1);
if(userIds == null || userIds.isEmpty()) {
return;
Expand Down
28 changes: 14 additions & 14 deletions src/main/java/hyundai/softeer/orange/event/fcfs/util/FcfsUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,38 @@
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class FcfsUtil {

// 선착순 이벤트의 PK를 간접적으로 보관하는 eventId tag
private static final String FCFS_PREFIX = "fcfs:";

public static String eventIdFormatting(String key) {
return key + ":eventId";
return formatKey(key, "eventId");
}

// 선착순 이벤트 tag
public static String keyFormatting(String key) {
return key + ":fcfs";
return formatKey(key, "count");
}
Comment on lines -14 to 17
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

한편, 기존 2:fcfs 형태의 key는 참여 가능한 사람 수를 저장하는 용도였는데, fcfs:2:fcfs와 같은 어색한 표현을 피하고자 count로 명확하게 수정했습니다.


// 선착순 이벤트 시작 시각 tag
public static String startTimeFormatting(String key) {
return key + ":start";
return formatKey(key, "start");
}

// 선착순 이벤트 마감 여부 tag
public static String endFlagFormatting(String key) {
return key + ":end";
return formatKey(key, "end");
}

// 선착순 이벤트 당첨자 tag
public static String winnerFormatting(String key) {
return key + ":winner";
return formatKey(key, "winner");
}

// 선착순 이벤트 참여자 tag
public static String participantFormatting(String key) {
return key + ":participant";
return formatKey(key, "participant");
}

// 선착순 이벤트 정답 tag
public static String answerFormatting(String key) {
return key + ":answer";
return formatKey(key, "answer");
}

// 공통 로직을 처리하는 메서드
private static String formatKey(String key, String suffix) {
return FCFS_PREFIX + key + ":" + suffix;
}
Comment on lines -24 to 42
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기존의 key는 [숫자]:[역할]로 구성되어 확장성이 떨어졌기에, 별도의 PREFIX를 추가하여 의미를 명확하게 하고자 했습니다.

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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()));
Expand All @@ -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()));
Expand Down
Loading