Redis Data Modeling


# 게임방 관련
Room:<gameId> → Hash
- host: "host_id"
- status: "0"
- title: "게임 제목"
- gameMode: "모드1"
- maxPlayerCount: "4"
- isPublicGame: "1"
- isWaiting: "0"
- quizSetId: "4"
- quizCount: "10" #랜덤 10문제     
- lastAcitivityAt: #고인 방 삭제하기 위함

**# 방 참가자 목록 (다중 서버일 때 브로드캐스팅 고려해서)**
Room:<gameId>:Players → Set #중복방지
- members: [playerId1, playerId2, ...]

# 플레이어 정보 (241113 'Room:<gameId>' 삭제. playerId만을 가지고 어떤 게임방에 있는지 쉽게 파악하기 위함)
Player:<playerId> → Hash
- playerName: "player_nickname" #241112 nickname에서 playerName으로 변경함 (용어 맞추기 위해)
- positionX: "0.3"
- positionY: "0.2"
- disconnected: "0"
- gameId: "123456"
- isAnswerCorrect: "0"

# 퀴즈셋 관련 (quizId는 DB quiz 테이블에 저장되어 있는 기본키)
Room:<gameId>:Quiz:<quizId> → Hash
- quiz: "퀴즈 내용"
- answer: "1"
- limitTime: "10"
- choiceCount: "4"

Room:<gameId>:Quiz:<quizId>:Choices → Hash
- 1: "보기1"
- 2: "보기2"
- 3: "보기3"
- 4: "보기4"

# 순위 리더보드
Room:<gameId>:Leaderboard → Sorted Set
- member: <playerId>
- score: <score>

# 현재 퀴즈 Id와 상태 저장
Room:<gameId>:CurrentQuiz -> String

# 타이머
Room:<gameId>:Timer -> String
(TTL 걸어둬서 타이머처럼 사용)
(NX 옵션 사용)

# 진행되어야 하는 퀴즈들 번호 순서대로 저장 
Room:<gameId>:QuizSet -> List
- quizId, quizId, quizId ...

RDB ERD


quiz ground (1).png

https://dbdiagram.io/d/672c550be9daa85aca9b7529