Ana içeriğe geç

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

  1. permission:code:{code} Redis'ten okunur.
  2. Hit varsa permission kimliği ve aktiflik bilgisi doğrudan kullanılır.
  3. Miss varsa permissions tablosundan code bazlı rebuild edilir.

Write Path

  1. Permission DB'de oluşturulur, güncellenir veya pasiflenir.
  2. Commit sonrası ilgili code key invalidate edilir.
  3. Sonraki read path gerekirse rebuild yapar.

Write Order

  1. permissions authoritative kaynaktır.
  2. Redis key DB commit'inden önce güncellenmez.
  3. invalidate + rebuild varsayı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ı:

  1. permission code ile DB kaydı çözülür
  2. lookup gövdesi normalize edilir
  3. SETEX permission:code:{code} ile yazılır

Gözlemlenebilirlik Metrikleri

  • permission_code_cache_hit_ratio
  • permission_code_cache_miss_total
  • permission_code_cache_rebuild_total
  • permission_code_cache_invalidation_total

TTL ve Invalidation

  • TTL: 10m - 30m

Invalidation tetikleri:

  1. permission code değişirse
  2. permission active flag değişirse
  3. permission silinirse

Çapraz Referanslar

  • /projects/qapu/services/redis/keyspace/permission-cache
  • /projects/qapu/services/redis/keyspace/authority-permissions-cache