-
[TIL] 타워 디펜스 팀 프로젝트 진행 (D-3)TIL-sparta 2024. 6. 19. 03:13
학습 키워드: Redis, Node.js, express, socket.io
1. 완료한 과제 진행 사항
Redis 범용 CRUD 함수 모음 작성:
- redisClient method들을 형식에 맞게 호출하는 범용 함수들을 작성해서 팀원들이 import하여 쓸 수 있도록 구성
https://github.com/eliotjang/tower-defense-game-project/pull/20
Highscore 정보 갱신하는 기능 구현:
- Redis에 저장되는 유저 최고 점수를 통해 highscore를 확인하고 갱신하는 기능 구현
https://github.com/eliotjang/tower-defense-game-project/pull/28
2. 과제 진행 간 문제점
Redis client의 legacyMode 옵션:
- hSet을 통해 추가한 데이터가 redis에는 들어갔는데 hVals로 받아지지 않는 문제가 있었다. 처음에는 prefix를 사용한게 문제가 되는가 싶어서 코드도 바꿔보고 사용하는 method도 바꿔보고 했으나 모두 작동하지 않았다. 그래서 이전 프로젝트 코드와 다른점을 살펴보니 redisClient가 처음 생성될 때 옵션으로 받는 legacyMode:true 부분이 추가되어 있는 것을 확인했다. 이를 false로 바꿔보니 아래와 같이 정상적으로 데이터가 받아졌다. Redis v4를 사용하기 위해 넣어둔 옵션이었다고 하는데 클라이언트 버전에 따라 hVals 등의 여러 기능이 다르게 동작하나보다.
zrevrange가 안되는 문제:- redis 버전이 높아서 zrevrange가 deprecated됨 -> zrange도 제대로 동작하지 않아서 결국 prisma때 queryRaw처럼 redisClient의 sendCommand method를 사용하여 ZREVRANGE raw command를 전송하여 해결
concurrency 문제:- 초기 타워 배치에서 concurrency 문제 발생 -> 이후 createGameData도 같은 문제를 겪는 것을 발견 -> multi()를 이용한 transaction을 도입했으나 반만 성공 -> 수정 중
--
REFERENCES:> 팀 프로젝트 repo
728x90'TIL-sparta' 카테고리의 다른 글
강의 과제) 응용 계층, DNS, HTTP (2) 2024.06.20 [TIL] 타워 디펜스 팀 프로젝트 진행 (D-2) (0) 2024.06.19 [TIL] 타워 디펜스 팀 프로젝트 발제 (D-4) (0) 2024.06.17 강의 과제) 전송 계층, TCP, UDP, TCP 오류, 흐름 제어, 혼잡 제어 (2) 2024.06.16 프로그래머스) 멀쩡한 사각형 풀이 (Java) (2) 2024.06.15