Ana içeriğe geç

User Authorities Cache

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

Bu key ailesi, bir kullanıcının bağlı authority kayıtlarını tek lookup ile çözmek için kullanılır.

Key Pattern

  • user:{user_id}:authorities

Örnek:

  • user:123:authorities

Owner Service

  • Primary writer: authority ilişkilerini yöneten servis
  • Primary readers: API, auth middleware, projection builder
  • Secondary writer: read-through rebuild yapan servisler

Authoritative Source

  • authorities

Temel İlke

  • Bu key, kullanıcının authority listesinin projection'ıdır.
  • DB authoritative katmandır.
  • Redis, request-time join maliyetini azaltır.

Kanonik Yapı

{
"user_id": 123,
"authority_ids": [88, 89],
"active_authority_ids": [88],
"updated_at": "2026-04-20T06:00:00Z"
}

Read / Write Paths

Read Path

  1. user:{user_id}:authorities Redis'ten okunur.
  2. Hit varsa authority listesi doğrudan kullanılır.
  3. Miss varsa authorities tablosundan rebuild edilir.

Write Path

  1. Kullanıcıya authority atanır, kaldırılır veya pasiflenir.
  2. Commit sonrası key invalidate edilir.
  3. Sonraki read path rebuild ile yeni listeyi kurar.

Write Order

  1. authorities authoritative kaynaktır.
  2. Redis key DB commit'inden önce güncellenmez.
  3. Primary strateji invalidate + rebuild yaklaşımıdır.

Failure ve Drift Senaryoları

Senaryo A: Redis miss

  • Beklenen davranış: DB fallback + write-back
  • Etki: ilk request yavaşlar, sonra hız kazanılır

Senaryo B: Authority listesi stale

  • Beklenen davranış: invalidate + rebuild
  • Etki: eski authority ile yanlış authz üretilmez

Rebuild

Rebuild kaynakları:

  • authorities

Rebuild adımları:

  1. kullanıcıya bağlı authority kayıtları okunur
  2. aktif/pasif ayrımı yapılır
  3. SETEX user:{user_id}:authorities ile yazılır

Gözlemlenebilirlik Metrikleri

  • user_authorities_cache_hit_ratio
  • user_authorities_cache_miss_total
  • user_authorities_rebuild_total
  • user_authorities_invalidation_total

TTL ve Invalidation

  • TTL: 5m - 15m

Invalidation tetikleri:

  1. kullanıcıya authority eklendiğinde
  2. kullanıcıdan authority kaldırıldığında
  3. authority pasif/aktif değiştiğinde

Çapraz Referanslar

  • /projects/qapu/services/redis/keyspace/authority-cache
  • /projects/qapu/services/redis/keyspace/device-user-authz