Permission Code Cache
Bu sayfa, permission:code:{code} key ailesinin Qapu içindeki işletim sözleşmesini tanımlar.
Bu key ailesi, permission code üzerinden hızlı permission_id ve temel metadata çözümü yapmak için kullanılır.
Key Pattern
permission:code:{code}
Örnek:
permission:code:reports.view
Owner Service
- Primary writer: permission yöneten servis
- Primary readers: API, auth middleware, projection builder
- Secondary writer: read-through rebuild yapan servisler
Authoritative Source
permissions
Temel İlke
- Bu key lookup/projection amaçlıdır.
- Özellikle code tabanlı auth kararlarında tam tablo taraması veya ek join maliyetini azaltır.
- DB authoritative katmandır.
Kanonik Yapı
{
"permission_id": 11,
"code": "reports.view",
"is_active": true,
"updated_at": "2026-04-20T06:00:00Z"
}
Read / Write Paths
Read Path
permission:code:{code}Redis'ten okunur.- Hit varsa permission kimliği ve aktiflik bilgisi doğrudan kullanılır.
- Miss varsa
permissionstablosundan code bazlı rebuild edilir.
Write Path
- Permission DB'de oluşturulur, güncellenir veya pasiflenir.
- Commit sonrası ilgili code key invalidate edilir.
- Sonraki read path gerekirse rebuild yapar.
Write Order
permissionsauthoritative kaynaktır.- Redis key DB commit'inden önce güncellenmez.
invalidate + rebuildvarsayılan yaklaşımdır.
Failure ve Drift Senaryoları
Senaryo A: Redis miss
- Beklenen davranış: DB fallback + write-back
- Etki: ilk lookup yavaşlar, sonra hızlanır
Senaryo B: Code stale
- Beklenen davranış: invalidate + rebuild
- Etki: eski code eşlemesi auth zincirine sızmaz
Senaryo C: Code değişti ama eski key kaldı
- Beklenen davranış: hem eski hem yeni code key'leri invalidation akışında ele alınır
- Etki: yanlış permission eşleşmesi önlenir
Rebuild
Rebuild kaynakları:
permissions
Rebuild adımları:
- permission code ile DB kaydı çözülür
- lookup gövdesi normalize edilir
SETEX permission:code:{code}ile yazılır
Gözlemlenebilirlik Metrikleri
permission_code_cache_hit_ratiopermission_code_cache_miss_totalpermission_code_cache_rebuild_totalpermission_code_cache_invalidation_total
TTL ve Invalidation
- TTL:
10m - 30m
Invalidation tetikleri:
- permission code değişirse
- permission active flag değişirse
- permission silinirse
Çapraz Referanslar
/projects/qapu/services/redis/keyspace/permission-cache/projects/qapu/services/redis/keyspace/authority-permissions-cache