diff --git a/src/main/java/com/m3pro/groundflip/repository/RankingRedisRepository.java b/src/main/java/com/m3pro/groundflip/repository/RankingRedisRepository.java index 0b8f4a12..98d71868 100644 --- a/src/main/java/com/m3pro/groundflip/repository/RankingRedisRepository.java +++ b/src/main/java/com/m3pro/groundflip/repository/RankingRedisRepository.java @@ -39,7 +39,7 @@ public void decreaseCurrentPixelCount(Long userId) { } } - public void saveUserInRedis(Long userId) { + public void saveUserInRanking(Long userId) { Double score = zSetOperations.score(RANKING_KEY, userId.toString()); if (score == null) { @@ -47,6 +47,14 @@ public void saveUserInRedis(Long userId) { } } + public void deleteUserInRanking(Long userId) { + Double score = zSetOperations.score(RANKING_KEY, userId.toString()); + + if (score != null) { + zSetOperations.remove(RANKING_KEY, userId.toString()); + } + } + public List getRankingsWithCurrentPixelCount() { Set> typedTuples = zSetOperations.reverseRangeWithScores(RANKING_KEY, RANKING_START_INDEX, RANKING_END_INDEX); diff --git a/src/main/java/com/m3pro/groundflip/service/UserService.java b/src/main/java/com/m3pro/groundflip/service/UserService.java index a6d88e7e..7d17ba78 100644 --- a/src/main/java/com/m3pro/groundflip/service/UserService.java +++ b/src/main/java/com/m3pro/groundflip/service/UserService.java @@ -99,7 +99,7 @@ public void putUserInfo(Long userId, UserInfoRequest userInfoRequest, MultipartF user.updateStatus(UserStatus.COMPLETE); user.updateProfileImage(fileS3Url); userRepository.save(user); - rankingRedisRepository.saveUserInRedis(user.getId()); + rankingRedisRepository.saveUserInRanking(user.getId()); } private Date convertToDate(int year) { @@ -133,6 +133,8 @@ public void deleteUser(Long userId, UserDeleteRequest userDeleteRequest) { jwtProvider.expireToken(userDeleteRequest.getAccessToken()); jwtProvider.expireToken(userDeleteRequest.getRefreshToken()); + + rankingRedisRepository.deleteUserInRanking(userId); } private void revokeAppleToken(Long userId) { diff --git a/src/test/java/com/m3pro/groundflip/repository/RankingRedisRepositoryTest.java b/src/test/java/com/m3pro/groundflip/repository/RankingRedisRepositoryTest.java index 2293f495..533a1e66 100644 --- a/src/test/java/com/m3pro/groundflip/repository/RankingRedisRepositoryTest.java +++ b/src/test/java/com/m3pro/groundflip/repository/RankingRedisRepositoryTest.java @@ -40,7 +40,7 @@ void increaseCurrentPixelCountTest() { //Given ZSetOperations zSetOperations = redisTemplate.opsForZSet(); Long userId = 1L; - rankingRedisRepository.saveUserInRedis(userId); + rankingRedisRepository.saveUserInRanking(userId); // When rankingRedisRepository.increaseCurrentPixelCount(userId); @@ -71,7 +71,7 @@ void decreaseCurrentPixelCountTest() { //Given ZSetOperations zSetOperations = redisTemplate.opsForZSet(); Long userId = 1L; - rankingRedisRepository.saveUserInRedis(userId); + rankingRedisRepository.saveUserInRanking(userId); rankingRedisRepository.increaseCurrentPixelCount(userId); rankingRedisRepository.increaseCurrentPixelCount(userId); @@ -89,7 +89,7 @@ void decreaseCurrentPixelCountTestCaseZero() { //Given ZSetOperations zSetOperations = redisTemplate.opsForZSet(); Long userId = 1L; - rankingRedisRepository.saveUserInRedis(userId); + rankingRedisRepository.saveUserInRanking(userId); // When rankingRedisRepository.decreaseCurrentPixelCount(userId); @@ -101,19 +101,34 @@ void decreaseCurrentPixelCountTestCaseZero() { @Test @DisplayName("[save] userId 를 넣으면 0으로 초기화 한다.") - void saveUserInRedisTest() { + void saveUserInRankingTest() { //Given ZSetOperations zSetOperations = redisTemplate.opsForZSet(); Long userId = 1L; // When - rankingRedisRepository.saveUserInRedis(userId); + rankingRedisRepository.saveUserInRanking(userId); // Then Double score = zSetOperations.score(RANKING_KEY, userId.toString()); assertThat(score).isEqualTo(0); } + @Test + @DisplayName("[delete] userId를 레디스에서 지울 수 있다.") + void deleteUserInRankingTest() { + //Given + ZSetOperations zSetOperations = redisTemplate.opsForZSet(); + Long userId = 1L; + + // When + rankingRedisRepository.deleteUserInRanking(userId); + + // Then + Double score = zSetOperations.score(RANKING_KEY, userId.toString()); + assertThat(score).isEqualTo(null); + } + @Test @DisplayName("[getRankingsWithScore] 점수 순으로 내림차순으로 30개가 리스트에 반환된다. 30개가 되지 않는다면 채워진 개수만 반환한다.") void getRankingsWithScoreTest() { @@ -199,9 +214,9 @@ void getUserCurrentPixelCountTestNull() { } private void setRanking(Long userId1, Long userId2, Long userId3) { - rankingRedisRepository.saveUserInRedis(userId1); - rankingRedisRepository.saveUserInRedis(userId2); - rankingRedisRepository.saveUserInRedis(userId3); + rankingRedisRepository.saveUserInRanking(userId1); + rankingRedisRepository.saveUserInRanking(userId2); + rankingRedisRepository.saveUserInRanking(userId3); rankingRedisRepository.increaseCurrentPixelCount(userId1); rankingRedisRepository.increaseCurrentPixelCount(userId1);