전체 Redis Keys 구조

// Battle 관련
battle:{battleId} // Battle 정보
battle:room:{roomId} // roomId -> battleId 매핑

// Room 관련
room:{roomId}:info // Room 정보
room:list // 전체 Room 목록
room:{roomId}:players // 특정 Room 참가자 (Set)
room:{roomId}:spectators // 특정 Room 관전자 (Set)

// 추후 업데이트...

저장 예시

Battle 정보 저장

Key: "battle:22"
Value: {
  "battleId": "22",
  "roomId": "room123",
  "status": "running",
  "config": { "duration": 1800 },
  "startedAt": "2024-01-15T10:30:00.000Z",
  "users": [
    {
      "userId": "user1",
      "code": "function solution() {...}",
      "language": "javascript",
      "progress": { "passedCount": 3, "totalCount": 10 },
      "isConnected": true,
      "isFinished": false
    },
    {
      "userId": "user2",
      "code": "const solution = () => {...}",
      "language": "javascript",
      "progress": { "passedCount": 5, "totalCount": 10 },
      "isConnected": true,
      "isFinished": false
    }
  ]
}

Room ↔ battle 매핑