Skip to main content

dict:districts Flow

dict:districts:{district_id} anahtarı, ilçe (district) lookup işlemleri için kullanılan, CRUD odaklı bir Redis sözlük anahtarıdır. Bu bölümde, anahtarın tipik yaşam döngüsü ve uygulama katmanındaki kullanım akışı adım adım senaryolarla anlatılır.


Senaryo: Yeni Bir İlçe Kaydı Oluşturma ve Yönetme

Bir uygulama, Türkiye'deki ilçeleri hızlıca lookup yapmak için Redis üzerinde dict:districts:{district_id} anahtarlarını kullanır. Aşağıda, bir ilçe kaydının oluşturulmasından silinmesine kadar geçen tipik akış adım adım gösterilmiştir.

1. İlçe Kaydı Oluşturma (SET)

SET dict:districts:1 '{"id":1,"name":"Selçuklu","province_id":42}'

Açıklama:

  • Anahtar: dict:districts:1
  • Value: İlçe objesinin JSON hali
  • Tüm alanlar zorunludur (bkz: Sözleşme)

2. İlçe Bilgisi Okuma (GET)

Bir ilçe kaydını okumak için uygulama şu sorguyu yapar:

GET dict:districts:1

Yanıt:

{
"id": 1,
"name": "Selçuklu",
"province_id": 42
}

Açıklama:

  • Value her zaman JSON formatındadır.
  • Eğer anahtar yoksa, uygulama fallback olarak ana veri tabanına (ör: PostgreSQL) başvurabilir.

3. İlçe Bilgisi Güncelleme (SET)

Bir ilçe kaydında değişiklik yapmak için (ör. adı değişti):

SET dict:districts:1 '{"id":1,"name":"Selçuklu Merkez","province_id":42}'

Açıklama:

  • Güncelleme işlemi de SET ile yapılır, eski değer üzerine yazar.
  • Tüm alanlar güncel JSON ile tekrar yazılır.

4. İlçe Kaydı Silme (DEL)

Bir ilçe kaydını silmek için:

DEL dict:districts:1

Açıklama:

  • Anahtar silinir, lookup sırasında bulunamaz.
  • Uygulama, silinen ilçe için ana veri tabanına başvurabilir.

Akış Özeti ve Notlar

  • Tüm işlemler atomic ve idempotenttir.
  • Value formatı her zaman sözleşmeye uygun JSON'dur.
  • Sadece ilçe lookup için kullanılır, başka veri tutulmaz.
  • Genellikle backend servisleri tarafından yazılır/okunur.
  • Büyük veri setlerinde performans için SCAN önerilir (bkz: index.mdx).

Hata ve Edge Case Senaryoları

1. Eksik veya Hatalı JSON

SET dict:districts:1 '{"id":1,"name":"Selçuklu"}'

Sonuç:

  • Sözleşmedeki zorunlu alanlar eksikse, uygulama katmanı validasyon hatası döner.

2. Aynı ID ile Tekrar SET

SET dict:districts:1 '{"id":1,"name":"Selçuklu","province_id":42}'
SET dict:districts:1 '{"id":1,"name":"Selçuklu Merkez","province_id":42}'

Sonuç:

  • Son SET işlemi geçerli olur, önceki value overwrite edilir.

3. Silinen Anahtara GET

DEL dict:districts:1
GET dict:districts:1

Sonuç:

  • GET işlemi null döner, uygulama fallback yapabilir.

Akış Diyagramı


İlişkili Sayfalar