dict:neighborhoods Flow
dict:neighborhoods:{neighborhood_id} anahtarı, mahalle (neighborhood) 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 Mahalle Kaydı Oluşturma ve Yönetme
Bir uygulama, Türkiye'deki mahalleleri hızlıca lookup yapmak için Redis üzerinde dict:neighborhoods:{neighborhood_id} anahtarlarını kullanır. Aşağıda, bir mahalle kaydının oluşturulmasından silinmesine kadar geçen tipik akış adım adım gösterilmiştir.
1. Mahalle Kaydı Oluşturma (SET)
SET dict:neighborhoods:1 '{"id":1,"name":"Yazır","district_id":1,"post_code":"42250"}'
Açıklama:
- Anahtar:
dict:neighborhoods:1 - Value: Mahalle objesinin JSON hali
- Tüm alanlar zorunludur (bkz: Sözleşme)
2. Mahalle Bilgisi Okuma (GET)
Bir mahalle kaydını okumak için uygulama şu sorguyu yapar:
GET dict:neighborhoods:1
Yanıt:
{
"id": 1,
"name": "Yazır",
"district_id": 1,
"post_code": "42250"
}
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. Mahalle Bilgisi Güncelleme (SET)
Bir mahalle kaydında değişiklik yapmak için (ör. adı değişti):
SET dict:neighborhoods:1 '{"id":1,"name":"Yazır Mahallesi","district_id":1,"post_code":"42250"}'
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. Mahalle Kaydı Silme (DEL)
Bir mahalle kaydını silmek için:
DEL dict:neighborhoods:1
Açıklama:
- Anahtar silinir, lookup sırasında bulunamaz.
- Uygulama, silinen mahalle 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 mahalle 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:neighborhoods:1 '{"id":1,"name":"Yazır"}'
Sonuç:
- Sözleşmedeki zorunlu alanlar eksikse, uygulama katmanı validasyon hatası döner.
2. Aynı ID ile Tekrar SET
SET dict:neighborhoods:1 '{"id":1,"name":"Yazır","district_id":1,"post_code":"42250"}'
SET dict:neighborhoods:1 '{"id":1,"name":"Yazır Mahallesi","district_id":1,"post_code":"42250"}'
Sonuç:
- Son SET işlemi geçerli olur, önceki value overwrite edilir.
3. Silinen Anahtara GET
DEL dict:neighborhoods:1
GET dict:neighborhoods:1
Sonuç:
- GET işlemi null döner, uygulama fallback yapabilir.
Akış Diyagramı
İlişkili Sayfalar
- dict:neighborhoods Sözleşmesi — Alanlar ve JSON formatı
- dict:neighborhoods Ana Sayfa — Genel kapsam ve kullanım
- dict-neighborhoods.schema.json — JSON şeması