Ana içeriğe geç

dict:addresses Flow

dict:addresses:{address_id} anahtarı, adres (address) 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 Adres Kaydı Oluşturma ve Yönetme

Bir uygulama, saha veya müşteri adreslerini hızlıca lookup yapmak için Redis üzerinde dict:addresses:{address_id} anahtarlarını kullanır. Aşağıda, bir adres kaydının oluşturulmasından silinmesine kadar geçen tipik akış adım adım gösterilmiştir.

1. Adres Kaydı Oluşturma (SET)

SET dict:addresses:1 '{"id":1,"province_id":1,"district_id":1,"neighborhood_id":1,"coordinate_id":1,"address_line":"Yazır Mahallesi, Selçuklu / Konya","description":"Merkez ofis adresi"}'

Açıklama:

  • Anahtar: dict:addresses:1
  • Value: Adres objesinin JSON hali
  • Tüm alanlar zorunludur (bkz: Sözleşme)

2. Adres Bilgisi Okuma (GET)

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

GET dict:addresses:1

Yanıt:

{
"id": 1,
"province_id": 1,
"district_id": 1,
"neighborhood_id": 1,
"coordinate_id": 1,
"address_line": "Yazır Mahallesi, Selçuklu / Konya",
"description": "Merkez ofis adresi"
}

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. Adres Bilgisi Güncelleme (SET)

Bir adres kaydında değişiklik yapmak için (ör. adres satırı değişti):

SET dict:addresses:1 '{"id":1,"province_id":1,"district_id":1,"neighborhood_id":1,"coordinate_id":1,"address_line":"Yeni Mahalle, Meram / Konya","description":"Yeni ofis adresi"}'

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. Adres Kaydı Silme (DEL)

Bir adres kaydını silmek için:

DEL dict:addresses:1

Açıklama:

  • Anahtar silinir, lookup sırasında bulunamaz.
  • Uygulama, silinen adres 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 adres 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:addresses:1 '{"id":1,"province_id":1}'

Sonuç:

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

2. Aynı ID ile Tekrar SET

SET dict:addresses:1 '{"id":1,"province_id":1,"district_id":1,"neighborhood_id":1,"coordinate_id":1,"address_line":"Yazır Mahallesi, Selçuklu / Konya","description":"Merkez ofis adresi"}'
SET dict:addresses:1 '{"id":1,"province_id":1,"district_id":1,"neighborhood_id":1,"coordinate_id":1,"address_line":"Yeni Mahalle, Meram / Konya","description":"Yeni ofis adresi"}'

Sonuç:

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

3. Silinen Anahtara GET

DEL dict:addresses:1
GET dict:addresses:1

Sonuç:

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

Akış Diyagramı


İlişkili Sayfalar