Pooli Redis Key Dictionary

본 문서는 트래픽 서비스(

TrafficRedisKeyFactory 및 관련 서비스) 기점으로 Redis에 등록/관리되는 Key들을 정리한 문서입니다.

(노션 페이지에 바로 복사/붙여넣기하여 표 형태로 확인하실 수 있습니다.)

1. 전역 정책 (Global Policy)

Key Name Type Fields / Values TTL Description
policy:{policyId} Hash value: "1" (Active) / "0" (Inactive)version: 타임스탬프 - 정책 활성화 상태 보관 (CAS 반영용 version 포함)
policy_bootstrap_version String 마지막 성공 부트스트랩 epochMillis - DB->Redis 스냅샷 동기화 최종 버전 기록
policy:bootstrap:lock String 소유자 식별자 (예: startup:{uuid}) 30s 부트스트랩 동시 실행 방지를 위한 분산락 키

2. 회선 정책 온디맨드 로딩 (Line Policy On-demand)

Key Name Type Fields / Values TTL Description
line_policy_ready:{lineId} String "1" 60s (기본) 라인 정책 스냅샷이 Redis에 로드되었음을 증명하는 플래그
line_policy_hydrate_lock:{lineId} String 소유자 식별자 3000ms Hydrate 중복 호출 방지를 위한 단기 분산락 키

3. 회선 및 앱 정책 한도 (Limits & Policies by Line)

Key Name Type Fields / Values TTL Description
daily_total_limit:{lineId} Hash value: 한도량(Byte) 또는 -1 (무제한/비활성)version: 타임스탬프 - 일별 총 데이터 한도
monthly_shared_limit:{lineId} Hash value: 한도량(Byte) 또는 -1version: 타임스탬프 - 월별 공유 데이터 한도
app_data_daily_limit:{lineId} Hash limit:{appId}: 한도량(Byte) 또는 -1version: 타임스탬프 - 앱별 일간 데이터 한도
app_speed_limit:{lineId} Hash speed:{appId}: 정규화된 속도값 또는 -1version: 타임스탬프 - 앱별 차단/제어 속도 제한
app_whitelist:{lineId} Set {appId} (String) - 화이트리스트에 등록된 앱 ID 목록
immediately_block_end:{lineId} Hash value: 차단 종료 시각(epochSec) 또는 0version: 타임스탬프 - 즉시 차단 정책 종료 일시
repeat_block:{lineId} Hash day:{dayOfWeek}:{id}{startSec}:{endSec}version: 타임스탬프 - 요일별 반복 차단 스케줄

4. 데이터 사용량 및 트래픽 잔량 (Usage & Remaining Amount)

Key Name Type Fields / Values TTL Description
remaining_indiv_amount:{id}:{yyyymm} Hash amount: 남은 잔량(Byte)is_empty: "1"(소진)/"0"(미소진)qos: 정규화된 큐오에스 값 익월 10일 개별(Line) 데이터 남은 데이터량 관리
remaining_shared_amount:{id}:{yyyymm} Hash amount: 남은 잔량(Byte)is_empty: "1"(소진)/"0"(미소진)qos: 정규화된 큐오에스 값 익월 10일 공유(Family) 단위 남은 데이터량 관리
daily_total_usage:{lineId}:{yyyymmdd} String 누적 차감량(Byte) - 회선의 일간 총 사용량 캐싱
monthly_shared_usage:{id}:{yyyymm} String 누적 차감량(Byte) - 회선의 월별 공유 한도 내 사용량 캐싱
daily_app_usage:{lineId}:{yyyymmdd} Hash {appId}: 누적 사용량(Byte) - 각 앱별 일별 사용량 캐싱
qos:{lineId} Hash qos: QoS 설정 속도값 - QoS 우회나 개별 설정 보관/접근 용도

5. 실시간 차감 속도 버킷 (Speed Buckets)

Key Name Type Fields / Values TTL Description
speed_bucket:individual:{id}:{epochSec} String 초당 누적 차감량(Byte) 15s 개인 풀 초단위 차감량 적재 버킷 (리필 계산용)
speed_bucket:shared:{num}:{epochSec} String 초당 누적 차감량(Byte) 15s 공유 풀 초단위 차감량 적재 버킷 (리필 계산용)

6. 중복 방지 및 멱등성 보장 (Idempotency & Dedupe)

Key Name Type Fields / Values TTL Description
dedupe:run:{traceId} String 상태코드 (CLAIMEDDONE) 60s In-flight 메시지 처리 시 동시성 제어 / 중복 커밋 선점 키
refill:idempotency:{uuid} String "1" (또는 원본 uuid 값) 동적계산 DB 리필 보상/갱신 프로세스 1회 실행 보장용 멱등키 (Lua 연동)
usage_delta:replay:idempotency:{id} String 상태 및 선점 증명값 - MQ Replay 중 동일 페이로드 재적용을 방어하기 위한 멱등키
indiv_hydrate_lock:{lineId} String 소유자 식별자 단기방어 개별 데이터 Hydrate 1회만 수행되도록 막는 분산락
shared_hydrate_lock:{familyId} String 소유자 식별자 단기방어 공유 데이터 Hydrate 1회만 수행되도록 막는 분산락
indiv_refill_lock:{lineId} String 소유자 식별자 단기방어 개별 데이터 DB 리필 부하를 막는 단기 분산락
shared_refill_lock:{familyId} String 소유자 식별자 단기방어 공유 데이터 DB 리필 부하를 막는 단기 분산락