diff --git a/src/main/java/com/goormy/hackathon/lambda/ScheduledFunction.java b/src/main/java/com/goormy/hackathon/lambda/ScheduledFunction.java index efd4ff1..6ee9d96 100644 --- a/src/main/java/com/goormy/hackathon/lambda/ScheduledFunction.java +++ b/src/main/java/com/goormy/hackathon/lambda/ScheduledFunction.java @@ -81,18 +81,18 @@ public void dumpToDB() { } } - @Transactional + @Transactional(rollbackFor = Exception.class) public void migrateDB() { log.info("데이터 이전을 시작합니다."); try { List follows = followListRedisRepository.getAllFollows(); followRepository.deleteAll(); followRepository.saveAll(follows); + log.info("Redis 데이터를 RDBMS로 옮기고 Redis를 초기화했습니다."); } catch (Exception e) { log.error("데이터 이전에 실패했습니다.",e); } - log.info("Redis 데이터를 RDBMS로 옮기고 Redis를 초기화했습니다."); } diff --git a/src/main/java/com/goormy/hackathon/repository/Redis/FollowListRedisRepository.java b/src/main/java/com/goormy/hackathon/repository/Redis/FollowListRedisRepository.java index 2e1478f..81a448f 100644 --- a/src/main/java/com/goormy/hackathon/repository/Redis/FollowListRedisRepository.java +++ b/src/main/java/com/goormy/hackathon/repository/Redis/FollowListRedisRepository.java @@ -3,21 +3,16 @@ import com.goormy.hackathon.entity.Follow; import com.goormy.hackathon.entity.Hashtag; import com.goormy.hackathon.entity.User; -import com.goormy.hackathon.repository.JPA.FollowRepository; import com.goormy.hackathon.repository.JPA.HashtagRepository; import com.goormy.hackathon.repository.JPA.UserRepository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.ListOperations; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Repository; import java.util.ArrayList; import java.util.List; import java.util.Set; -import java.util.stream.Collectors; @Repository @Slf4j @@ -26,18 +21,13 @@ public class FollowListRedisRepository { private final RedisTemplate redisTemplate; - private ListOperations listOperations; - - private final FollowRepository followRepository; - private final HashtagRepository hashtagRepository; private final UserRepository userRepository; public void set(Long hashtagId, Long userId) { String key = "hashtagId:" + hashtagId.toString(); - String userid = userId.toString(); - redisTemplate.opsForList().rightPush(key, userid); + redisTemplate.opsForList().rightPush(key, userId); } public void delete(Long hashtagId, Long userId) { @@ -55,7 +45,9 @@ public List getAllFollows() { if (userIds != null) { for (Object userId : userIds) { Long hashtagId = Long.parseLong(key.split(":")[1]); - User user = userRepository.findById((Long)userId) + Long userIdLong = Long.parseLong(String.valueOf(userId)); + + User user = userRepository.findById(userIdLong) .orElseThrow(() -> new IllegalArgumentException("해당 사용자를 찾을 수 없습니다.")); Hashtag hashtag = hashtagRepository.findById(hashtagId) .orElseThrow(() -> new IllegalArgumentException("해당 해시태그 찾을 수 없습니다. "));