Ana içeriğe geç

Permission Cache

Bu sayfa, permission:{permission_id} key ailesinin Qapu içindeki işletim sözleşmesini tanımlar.

Bu key ailesi, tekil permission entity bilgisini hızlı çözmek için kullanılır.

Key Pattern

  • permission:{permission_id}

Örnek:

  • permission:11

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 permission entity kaydının cache kopyasıdır.
  • DB authoritative katmandır.
  • Redis lookup maliyetini düşürür.

Kanonik Yapı

{
"permission_id": 11,
"code": "reports.view",
"name": "Reports View",
"is_active": true,
"updated_at": "2026-04-20T06:00:00Z"
}

Read / Write Paths

Read Path

  1. permission:{permission_id} Redis'ten okunur.
  2. Hit varsa permission bilgisi doğrudan kullanılır.
  3. Miss varsa permissions tablosundan rebuild edilir.

Write Path

  1. Permission DB'de oluşturulur, güncellenir veya pasiflenir.
  2. Commit sonrası key invalidate edilir veya overwrite 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: Permission stale

  • Beklenen davranış: invalidate + rebuild
  • Etki: eski permission metadata'sı auth zincirine sızmaz

Rebuild

Rebuild kaynakları:

  • permissions

Rebuild adımları:

  1. permission kaydı DB'den okunur
  2. gövde normalize edilir
  3. SETEX permission:{permission_id} ile yazılır

Gözlemlenebilirlik Metrikleri

  • permission_cache_hit_ratio
  • permission_cache_miss_total
  • permission_cache_rebuild_total
  • permission_cache_invalidation_total

TTL ve Invalidation

  • TTL: 10m - 30m

Invalidation tetikleri:

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

Çapraz Referanslar

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