[Project_] R - DB 사용 방식과 Redis 사용 방향

2025. 2. 21. 20:40·Project_xxx

영구적 데이터 저장 DB = MySQL

● 현재 제작 중인 게임에서는 회원가입, 로그인을 통해 사용자의 데이터를 DB에 저장하고
   캐릭터를 생성할 때, DB에 nickname, classCode를 저장한다.
   - nickname은 중복이 불가능한 string 형태의 데이터

   - classCode는 캐릭터의 종류를 선택하는 int형 데이터

 

● 캐릭터를 생성할 때 MySQL에 level, exp, stamina, pick_speed, move_speed, ability_point를
   기본값을 설정하고 데이터 row를 생성한다.

Stats Table

 

● 캐릭터 생성할 때 MySQL에 인벤토리를 생성하고, item_id는 nullable로 설정하여 아이템이 들어올 자리를
   만들어둔다.

Inventories Table

 

게임을 접속했을 때 사용하는 noSQL DB = Redis

● 사용자가 로그인 후 캐릭터가 로비(Town)에 들어오면 캐릭터(플레이어)가 자동으로 생성되며, 이때
   Redis에 접속 정보를 저장해 둔다.

   = playerSession

playerSession에 in-memory 되면 Redis에 저장되는 데이터들

● 추가적으로 사용자가 로그인되어 있다는 것을 서버가 인식하기 위한 데이터도 저장해 둔다.

  = userSession

userSession in-memory에 추가 되면 Redis에 생성되는 데이터들

 

앞으로 구현 방향

● 현재는 사용자가 서버에 접속하고 클라이언트를 통해 게임을 접속했을 때 예시로 어떤 식으로 데이터가
   들어가는지에 대한 테스트 적인 부분이다.

 

● 연결이 확인되었으니 이제는 클라이언트가 지역 이동을 했을 때 cuurentSector를 변경해 주는 작업과
   캐릭터(player)에 대한 대부분의 데이터를 Redis에 위와 같이 Hash 형태로 저장해 두었다가 지역 이동 시
   사용하는 처리가 필요하다.

 

● 즉, Client → Server → Redis 이렇게 저장되다가 클라이언트가 접속 종료를 했을 때 MySQL과 연동하여
   영구적으로 보관이 필요한 데이터들은 Update를 사용하여 지금까지 플레이 기록을 저장하는 방향으로
   구현하고자 한다.

 

● 주의해야 할 점은 DB 접근을 최소화한다고 해서 너무 MySQL을 업데이트하지 않는 것은 클라이언트가
   비정상 종료나 Server에 onEnd가 들어오지 않았을 경우 문제가 생길 수 있으니 추가적으로 시간을 설정해서
   주기적으로 MySQL을 업데이트하는 방식을 고려해야 한다.

'Project_xxx' 카테고리의 다른 글

[Project_] R - 로그인, 캐릭터 생성에 대한 고민  (0) 2025.02.14
[Project_] R - 서버 설계 (Session)  (0) 2025.02.11
[Projcet_] TDO - Trouble Shooting  (0) 2025.01.31
[Project_] MG - Trouble Shooting  (0) 2025.01.16
[Project_] TD - Final  (0) 2025.01.02
'Project_xxx' 카테고리의 다른 글
  • [Project_] R - 로그인, 캐릭터 생성에 대한 고민
  • [Project_] R - 서버 설계 (Session)
  • [Projcet_] TDO - Trouble Shooting
  • [Project_] MG - Trouble Shooting
wakelight23
wakelight23
했던 공부를 기록하는 곳
  • wakelight23
    wakelight23 공부기록
    wakelight23
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Programming Language (26)
        • Error Note (1)
        • HTML, CSS (3)
        • Javascript 공부기록 (5)
        • SQL 문제풀이 (4)
      • Develop Diary (34)
        • Interview (20)
        • TheFourFs (13)
      • Project_xxx (18)
      • IT (32)
        • DB (0)
        • Hardware (3)
        • Network (10)
        • Server (11)
        • OS (4)
        • 게임수학 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Wil
    Today I learned
    weekly i learned
    KPT회고
    today i leraned
    today i lerned
    today i learnd
    Til
  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
wakelight23
[Project_] R - DB 사용 방식과 Redis 사용 방향
상단으로

티스토리툴바