42Seoul-Tea42 / backend

1 stars 0 forks source link

[BE] Redis 추가 #18

Closed OZestina closed 2 months ago

OZestina commented 3 months ago

인메모리 데이터베이스인 Redis 추가가 필요합니다

현재 JWT가 필요한 API마다 붙어있는 Location update Decorator는

  1. (select) 해당 유저를 DB에서 찾고
  2. (연산) 기존 유저의 거리와 비교하고
  3. (update) 필요한 경우 유저의 위치 정보를 업데이트 합니다

DB의 부하를 줄이기 위해 유저의 위치 정보(longitude, latitude)를 캐시 메모리에서 관리하면 좋겠습니다. 추가로 유저의 Status와 친구 목록 등 Redis에서 추가로 관리하면 좋을 내용이 있는지 확인이 필요합니다.

OZestina commented 3 months ago

상기 내용에서 확장해 유저 위치 정보 뿐 아니라 user 내용을 모두 관리하면 좋겠습니다.

유저 정보도 유저 존재 여부를 확인하기 위해 자주 접근하는데,

  1. 유저정보(1), 유저 위치정보(2) 따로 관리
    • 위치 정보는 (2)로만 접근
    • 위치 정보만 업데이트 시 그 외 유저 정보(1)는 추가 업데이트 필요 없음
  2. 위치 정보를 포함한 유저정보 통합 관리
    • 위치 정보(2) 업데이트 시 Redis 내 유저 정보(1) 업데이트 필요
OZestina commented 2 months ago

redis 관리 내역은 하기와 같습니다.

  1. 유저 로그인 정보 (db=0)

    • 유저 로그인 정보 (id: {socket, location, refresh_jti, check내용)
    • 소켓 정보(socket_uid: id)
  2. blocklist (db=1)

    • 로그아웃한 유저 token jti (access, refresh)
    • @jwt.token_in_blocklist_loader 로 block jti 검사