-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
BE백엔드 (NestJS, API) 관련 작업백엔드 (NestJS, API) 관련 작업FE프론트엔드 (React) 관련 작업프론트엔드 (React) 관련 작업P1: High핵심 기능, MVP 필수 요건핵심 기능, MVP 필수 요건✨ Feature새로운 기능 추가새로운 기능 추가
Milestone
Description
🧾 이슈 개요
방장(Host)의 권한 변경 기능을 구현하며, DB 업데이트와 Redis 캐시 삭제(Evict) 전략을 적용하여 데이터 일관성을 유지합니다.
👤 사용자 시나리오
- 방장이 A 유저를 'viewer'에서 'editor'로 변경한다.
- 서버는 DB의
Pt테이블role컬럼을 'editor'로 업데이트한다. (트랜잭션 시작) - DB 업데이트 성공 시, Redis의
room:{id}:pt:{A}:role키를 삭제한다. (Cache Invalidation) - 변경 사항을 방의 모든 인원에게 소켓으로 알린다.
- 이후 A 유저의 권한 조회 요청이 들어오면 Redis에 값이 없으므로 DB에서 읽어와 다시 Redis에 셋팅(TTL 5m)한다.
✅ TODO
- 권한 변경 API/소켓 핸들러 구현
- DB 트랜잭션 처리:
Pt테이블 Update - Redis Cache Eviction:
DEL room:{room_id}:pt:{pt_id}:role구현 - 권한 조회 로직 구현:
Redis Get-> (Miss) ->DB Get&Redis Set (TTL 5m)-> Return - 예외 처리: DB 실패 시 롤백, Redis 삭제 실패 시 로그 기록 (TTL에 의존)
📌 Acceptance Criteria
- 권한 변경 후 즉시 반영되어야 한다.
- Redis 키를 강제로 삭제했을 때, 다음 조회 시 DB에서 올바른 값을 가져와 다시 캐싱해야 한다.
- Editor 최대 인원(6명) 제한 로직이 포함되어야 한다.
💬 Remarks
- 핵심 전략: "DB가 진실(Source of Truth)이고 Redis는 거들 뿐". 수정(Update) 시 Redis 값을 직접 바꾸려 하지 말고 삭제(Delete)하세요.
Metadata
Metadata
Assignees
Labels
BE백엔드 (NestJS, API) 관련 작업백엔드 (NestJS, API) 관련 작업FE프론트엔드 (React) 관련 작업프론트엔드 (React) 관련 작업P1: High핵심 기능, MVP 필수 요건핵심 기능, MVP 필수 요건✨ Feature새로운 기능 추가새로운 기능 추가