feat: Redis 토큰 캐시 관리 구현 (#154) #155

Merged
seonkyu.kim merged 1 commits from feature/#154-redis-token-cache into develop 2026-02-11 01:45:19 +00:00
Owner

📋 작업 요약

  • Redis 기반 디바이스 토큰 캐시 관리 구현
  • PushWorker single 발송 시 캐시 우선 조회로 DB 부하 최소화
  • 디바이스 등록/수정/삭제/수신동의 변경 시 캐시 무효화

Closes #154

🛠️ 작업 내용 (Changes)

  • SPMS.Application/Interfaces/ITokenCacheService.cs — 인터페이스 + CachedDeviceInfo record
  • SPMS.Infrastructure/Caching/TokenCacheService.cs — Redis 기반 구현 (TTL 1시간)
  • SPMS.Infrastructure/Caching/RedisConnection.cs — GetServer() 메서드 추가
  • SPMS.Infrastructure/DependencyInjection.cs — ITokenCacheService DI 등록
  • SPMS.Infrastructure/Workers/PushWorker.cs — single 발송 시 캐시 우선 조회
  • SPMS.Application/Services/DeviceService.cs — 등록/수정/삭제/수신동의 시 캐시 무효화

📢 리뷰어 참고 사항 (To Reviewers)

  • Key: device:token:serviceId:deviceId, TTL: 1시간
  • CachedDeviceInfo: Token, Platform, IsActive, PushAgreed 캐싱
  • Redis 장애 시 fallback으로 DB 조회 (예외 무시)
  • InvalidateByServiceAsync: KEYS 패턴 스캔으로 서비스 전체 무효화

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

Build succeeded.
    0 Warning(s)
    0 Error(s)
## 📋 작업 요약 - Redis 기반 디바이스 토큰 캐시 관리 구현 - PushWorker single 발송 시 캐시 우선 조회로 DB 부하 최소화 - 디바이스 등록/수정/삭제/수신동의 변경 시 캐시 무효화 ## 🔗 관련 이슈 (Related Issues) Closes #154 ## 🛠️ 작업 내용 (Changes) - [x] SPMS.Application/Interfaces/ITokenCacheService.cs — 인터페이스 + CachedDeviceInfo record - [x] SPMS.Infrastructure/Caching/TokenCacheService.cs — Redis 기반 구현 (TTL 1시간) - [x] SPMS.Infrastructure/Caching/RedisConnection.cs — GetServer() 메서드 추가 - [x] SPMS.Infrastructure/DependencyInjection.cs — ITokenCacheService DI 등록 - [x] SPMS.Infrastructure/Workers/PushWorker.cs — single 발송 시 캐시 우선 조회 - [x] SPMS.Application/Services/DeviceService.cs — 등록/수정/삭제/수신동의 시 캐시 무효화 ## 📢 리뷰어 참고 사항 (To Reviewers) - Key: device:token:serviceId:deviceId, TTL: 1시간 - CachedDeviceInfo: Token, Platform, IsActive, PushAgreed 캐싱 - Redis 장애 시 fallback으로 DB 조회 (예외 무시) - InvalidateByServiceAsync: KEYS 패턴 스캔으로 서비스 전체 무효화 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` Build succeeded. 0 Warning(s) 0 Error(s) ```
seonkyu.kim added 1 commit 2026-02-11 01:42:04 +00:00
- ITokenCacheService 인터페이스 및 Redis 기반 TokenCacheService 구현
- Key: device:token:{serviceId}:{deviceId}, TTL: 1시간
- PushWorker single 발송 시 캐시 우선 조회, 미스 시 DB 조회 후 캐시 저장
- DeviceService 등록/수정/삭제/수신동의 변경 시 캐시 무효화
- RedisConnection에 GetServer() 메서드 추가 (서비스별 전체 무효화용)

Closes #154
seonkyu.kim added the
Priority
Medium
Status
In Progress
Type
Feature
labels 2026-02-11 01:42:23 +00:00
seonkyu.kim added this to the Phase 3-2: 통계 & Webhook & 배치 milestone 2026-02-11 01:42:36 +00:00
seonkyu.kim self-assigned this 2026-02-11 01:42:44 +00:00
seonkyu.kim requested review from Owners 2026-02-11 01:42:53 +00:00
seonkyu.kim merged commit bbcb770b2d into develop 2026-02-11 01:45:19 +00:00
seonkyu.kim deleted branch feature/#154-redis-token-cache 2026-02-11 01:45:59 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-11 01:46:19 +00:00
Sign in to join this conversation.
No description provided.