컨텐츠 등록 시, List로 요청값을 받아 그대로 Redis에 저장하는 과정에서, Redis가 List 데이터를 제대로 저장하지 못하고 클래스 값만 받아오는 상황이 생겼다.
11) "playerContents.[1]._class"
12) "java.util.ArrayList"
Plain Text
복사
위와 같이 java.util.ArrayList로 저장되고, hget roomId:~ playerContents.[1] 명령어로 조회를 시도하면 (nil) 값이 반환되었다.
// 컨텐츠 등록
@Override
public void registerContents(ContentSelectReq request) {
Room room = findRoomById(request.roomId());
if (request.contentIds().size() > 5) {
throw new RoomException(ExceptionMessage.CONTENTS_OVER);
}
room.getPlayerContents().put(request.userId(), request.contentIds());
roomRepository.save(room);
log.info("contentIds : {}", room.getPlayerContents().get(request.userId()));
}
Java
복사
로그를 찍어 get 명령어로 조회해오는 과정에서는 제대로 저장된 값을 반환하였다. 이건 그냥 JVM에 값 캐싱된 것 때문인 것 같고.. roomRepository.save(room) 메서드가 제대로 작동하지 않아 저장과정에서 문제가 발생하는 거라 판단햇다.