Redis ve In-Memory Veritabani Cozumleri Rehberi
Modern yazilim sistemlerinde performans, kullanici deneyimini dogrudan etkileyen en kritik faktordur. Veritabani sorgulari milisaniyeler icinde tamamlanmadiginda kullanicilar uygulamayi terk eder, is surecleri aksak ve diske dayali geleneksel veritabanlari belirli olceklerde yetersiz kalir. Tam bu noktada Redis ve in-memory veritabani cozumleri devreye girer. Smart Maple olarak, Ankara merkezli projelerimizde Redis'i yuksek performansli mimarilerin vazgecilmez bir bileseni olarak konumlandiriyoruz. Bu rehberde Redis'in temel yapisindan kurumsal kullanim senaryolarina kadar kapsamli bir yol haritasi sunuyoruz.
Redis Nedir ve Neden Kullanilir
Redis (Remote Dictionary Server), acik kaynakli bir in-memory veri yapisi deposudur. 2009 yilinda Salvatore Sanfilippo tarafindan gelistirilen Redis, verileri tamamen bellekte (RAM) tutarak mikrosaniye duzeyde okuma ve yazma islemleri saglar. Geleneksel disk tabanli veritabanlarina kiyasla 10 ila 100 kat daha hizli yanit sureleri sunar.
Redis'in tercih edilmesinin temel nedenleri sunlardir:
- Dusuk gecikme suresi: Ortalama 0.1 ms altinda okuma ve yazma performansi sunar.
- Zengin veri yapilari: Basit anahtar-deger ciftlerinin otesinde karmasik veri modellerini destekler.
- Atomik islemler: Tum islemler atomik olarak calisir ve veri tutarliligi saglar.
- Yatay olceklenebilirlik: Redis Cluster ile veri birden fazla dugume dagitilabilir.
- Cok amacli kullanim: Onbellekleme, kuyruk yonetimi, oturum deposu ve gercek zamanli analitik gibi farkli is yuklerini tek bir aracla karsilar.
Redis Veri Yapilari
Redis'in gucunu anlamak icin destekledigi veri yapilarini bilmek gerekir. Her yapi, belirli kullanim senaryolari icin optimize edilmistir.
Temel Veri Yapilari
Strings: En basit veri tipidir. Metin, sayi veya binary veri saklar. Sayac (counter) uygulamalarinda INCR ve DECR komutlariyla atomik artirma ve azaltma islemleri yapilir.
Hashes: Bir anahtar altinda alan-deger ciftleri saklar. Kullanici profilleri veya urun detaylari gibi nesne benzeri verileri modellemek icin idealdir. Tek bir alani guncellemek icin tum veriyi yeniden yazmaya gerek kalmaz.
Lists: Sirali eleman koleksiyonlaridir. Kuyruk (queue) ve yigin (stack) yapilarini dogal olarak destekler. LPUSH, RPUSH, LPOP ve RPOP komutlariyla her iki uctan eleman ekleme ve cikarma islemi yapilir.
Sets: Benzersiz elemanlarin sirasiz koleksiyonudur. Kesisim, birlesim ve fark gibi kume islemlerini destekler. Etiketleme sistemleri ve benzersiz ziyaretci takibi icin uygundur.
Sorted Sets: Her elemana bir skor atanmis sirali kumelerdir. Skor bazli siralama islemlerinde liderlik tablolari, oncelik kuyruklari ve zaman serisi verileri icin kullanilir.
Streams: Redis 5.0 ile gelen log benzeri bir veri yapisidir. Olay akislari (event streams) icin tasarlanmistir ve tuketici gruplari (consumer groups) ile birlikte dagitik olay isleme altyapisi sunar.
Onbellekleme Stratejileri
Onbellekleme (caching), Redis'in en yaygin kullanim alanidir. Dogru strateji secimi, sistem performansini dogrudan etkiler.
Cache-Aside (Lazy Loading)
Uygulama once onbellegi kontrol eder. Veri varsa (cache hit) dogrudan dondurulur. Yoksa (cache miss) veritabanindan okunur, onbellege yazilir ve sonuc dondurulur. Bu yontem yalnizca talep edilen verileri onbellegede tutar ve bellek kullanimini optimize eder. Dezavantaji, ilk erisimde her zaman bir cache miss yasanmasidir.
Write-Through
Veri her yazildiginda hem veritabanina hem de onbellege esanli olarak yazilir. Onbellek her zaman guncel kalir ve cache miss orani duser. Ancak yazma islemleri iki hedefin de tamamlanmasini bekledigi icin yazma gecikmesi artar. Sik okunan ama nadiren degisen veriler icin uygundur.
Write-Behind (Write-Back)
Veri once onbellege yazilir, veritabanina yazma islemi asenkron olarak daha sonra toplu (batch) sekilde gerceklestirilir. Yazma performansi cok yuksektir. Ancak onbellek ile veritabani arasinda gecici tutarsizlik olusabilir ve onbellek cokerse veri kaybi riski vardir.
| Strateji | Okuma Performansi | Yazma Performansi | Tutarlilik | Karmasiklik |
|---|---|---|---|---|
| Cache-Aside | Yuksek | Orta | Orta | Dusuk |
| Write-Through | Cok Yuksek | Dusuk | Yuksek | Orta |
| Write-Behind | Yuksek | Cok Yuksek | Dusuk | Yuksek |
Cache Invalidation Yaklasimlari
Onbellekteki verinin ne zaman gecersiz kilinacagi, dogru yonetilmesi gereken kritik bir konudur.
TTL (Time-To-Live)
Her anahtara bir yasam suresi atanir. Sure dolunca veri otomatik olarak silinir. Basit ve etkilidir, ancak sure cok kisa tutulursa cache miss orani artar; cok uzun tutulursa eski veri sunulur.
Event-Based Invalidation
Kaynak veride degisiklik oldugunda bir olay (event) tetiklenir ve ilgili onbellek anahtari silinir veya guncellenir. Pub/Sub veya mesaj kuyruklari uzerinden uygulanir. Tutarlilik yuksektir ancak sistem karmasikligi artar.
Versioning (Surumleme)
Onbellek anahtarina bir surum numarasi eklenir. Veri degistiginde surum numarasi arttirilir ve eski anahtar dogal olarak kullanilmaz hale gelir. Bu yontem ozellikle CDN ve dagitik onbellek katmanlarinda etkilidir.
Session Yonetimi ve Dagitik Oturum
Cok sunuculu (multi-instance) mimarilerde kullanici oturumlarini yonetmek zordur. Bir kullanici bir istekte sunucu A'ya, sonraki istekte sunucu B'ye yonlendirildiginde oturum verisi kaybolabilir. Redis, merkezi bir oturum deposu olarak bu sorunu cozer.
Redis tabanli session yonetiminin avantajlari sunlardir:
- Sunucu bagimsizligi: Herhangi bir uygulama sunucusu oturuma erisebilir.
- Yuksek performans: Oturum verisi bellekte tutuldugu icin erisim suresi cok dusuktur.
- Otomatik temizlik: TTL sayesinde suresi dolan oturumlar otomatik silinir.
- Olceklenebilirlik: Yeni sunucular eklendiginde oturum yonetiminde ek yapilandirma gerekmez.
Pub/Sub ve Mesajlasma
Redis'in Pub/Sub (Publish/Subscribe) mekanizmasi, yayin-abone modeliyle gercek zamanli mesajlasma saglar. Bir yayinci (publisher) belirli bir kanala mesaj gonderir ve o kanala abone olan tum istemciler mesaji aninda alir.
Kullanim alanlari arasinda canli bildirim sistemleri, sohbet uygulamalari, gercek zamanli pano guncellemeleri ve mikroservisler arasi olay yayilimi yer alir. Pub/Sub mesajlari kalici degildir; abone bagli degilken gonderilen mesajlar kaybolur. Kalici mesajlasma gerektiginde Redis Streams tercih edilmelidir.
Redis Streams ve Event Processing
Redis Streams, Apache Kafka benzeri bir olay akisi yapisini Redis icinde sunar. Her mesaj benzersiz bir kimlikle (ID) saklanir ve tuketici gruplari sayesinde birden fazla tuketici ayni akisi paralel olarak isleyebilir.
Streams'in temel ozellikleri sunlardir:
- Kalici mesajlar: Mesajlar abone olsun ya da olmasin akista saklanir.
- Tuketici gruplari: Ayni akistaki mesajlar farkli tuketiciler arasinda dagitilir.
- Onay mekanizmasi (ACK): Islenen mesajlar onaylanir, onaylanmayanlar yeniden islenir.
- Geri okuma: Gecmis mesajlara belirli bir ID'den itibaren erisim mumkundur.
Mikroservis mimarilerinde olay odakli iletisim (event-driven communication) icin Redis Streams, Kafka'ya kiyasla daha dusuk operasyonel karmasiklikla benzer islevsellik sunar.
Redis Stack: Genisletilmis Yetenekler
Redis Stack, cekirdek Redis'in uzerine eklenen modullerle veritabanini cok amacli bir platforma donusturur.
RedisJSON: JSON belgelerini dogal olarak saklar ve sorgular. Ic ice gecmis JSON yapilarinda belirli alanlara dogrudan erisim ve guncelleme imkani tanir. Belge tabanli veritabani ihtiyaclarini Redis icinde karsilar.
RedisSearch: Tam metin arama ve ikincil indeksleme saglar. Fasetli arama, otomatik tamamlama ve cografi konum bazli sorgulari destekler. Elasticsearch'e alternatif olarak daha dusuk gecikme suresiyle calisir.
RedisTimeSeries: Zaman serisi verilerini optimize edilmis sekilde saklar. Otomatik alt ornekleme (downsampling), toplama (aggregation) ve saklama politikalari sunar. IoT sensoru verileri ve performans metrikleri icin idealdir.
Redis Cluster ve Yuksek Erisilebilirlik
Uretim ortamlarinda tek bir Redis dugumu yeterli degildir. Redis Cluster ve Sentinel, yuksek erisilebilirlik ve olceklenebilirlik saglar.
Redis Sentinel: Master-slave (birincil-replika) yapisini izler. Birincil dugum cokerse otomatik olarak bir replikayi birincil konumuna yukseltir (failover). Istemcilere guncel birincil dugum bilgisini saglar.
Redis Cluster: Veriyi otomatik olarak birden fazla dugume dagitir (sharding). 16384 hash slotu kullanarak anahtarlari dugumlere atar. Dogrusal olceklenme ve yuksek erisim birlikte saglanir. Minimum uc birincil dugumle kurulur.
Redis vs Memcached vs Valkey Karsilastirmasi
| Ozellik | Redis | Memcached | Valkey |
|---|---|---|---|
| Veri Yapilari | Zengin (10+) | Yalnizca string | Zengin (Redis uyumlu) |
| Persistence | RDB + AOF | Yok | RDB + AOF |
| Cluster | Yerlesik | Istemci tarafli | Yerlesik |
| Pub/Sub | Var | Yok | Var |
| Lisans | SSPL (v7.4+) | BSD | BSD |
| Coklu is parcacigi | Tek is parcacigi (I/O threadleri) | Coklu is parcacigi | Coklu is parcacigi |
| Topluluk | Cok genis | Olgun | Hizla buyuyen |
Valkey, Redis'in BSD lisansli forku olarak 2024'te Linux Foundation altinda ortaya cikmistir. Redis'in SSPL lisansina gecisiyle birlikte acik kaynak alternatifleri arasinda one cikmistir. API uyumlulugu sayesinde mevcut Redis uygulamalari minimum degisiklikle Valkey'e tasinabilir.
Persistence Stratejileri
Redis, in-memory bir veritabani olmasina ragmen verileri diske yazarak kalicilik saglar.
RDB (Redis Database)
Belirli araliklarla verinin tam bir anlik goruntusunu (snapshot) diske yazar. Yedekleme ve felaket kurtarma icin uygundur. Dusuk performans etkisi saglar, ancak son snapshot'tan sonraki veriler kaybolabilir.
AOF (Append-Only File)
Her yazma islemini bir log dosyasina ekler. Veri kaybi riski cok dusuktur (yapilandirmaya bagli olarak en fazla bir saniyelik kayip). Dosya boyutu zamanla buyur, ancak Redis otomatik yeniden yazma (rewrite) ile dosyayi sikistirir.
Uretim ortamlarinda her iki yontemin birlikte kullanilmasi onerilir. RDB hizli yeniden yukleme, AOF ise veri guvenligi saglar.
Kurumsal Kullanim Senaryolari
Rate Limiting (Hiz Sinirlandirma)
API'lere gelen istekleri sinirlandirmak icin Redis'in atomik sayaclari ve TTL ozelligi kullanilir. Sliding window ve token bucket algoritmalari Redis uzerinde verimli sekilde uygulanir. Boylece DDoS saldirilarina ve asiri kullanima karsi koruma saglanir.
Leaderboard (Liderlik Tablosu)
Sorted Sets, skor bazli siralama icin dogal bir yapidir. ZADD ile skor ekleme, ZREVRANGE ile en yuksek skorlari listeleme ve ZRANK ile siralama sorgulama islemleri mikrosaniyeler icinde tamamlanir. Oyun uygulamalari, satis performansi panolari ve yarismali sistemler icin idealdir.
Gercek Zamanli Analitik
HyperLogLog veri yapisi, benzersiz eleman sayisini cok dusuk bellek kullanimiyla tahmin eder. Bitmap islemleri, gunluk aktif kullanici takibi gibi senaryolarda etkin sonuclar sunar. RedisTimeSeries ile metrik toplama ve raporlama altyapisi kurulabilir.
Dagitik Kilit (Distributed Lock)
Mikroservis mimarilerinde paylasilan kaynaklara esanli erisimi kontrol etmek icin Redis tabanli dagitik kilitler kullanilir. Redlock algoritmasi, birden fazla Redis dugumu uzerinde guvenilir kilitleme mekanizmasi saglar.
Sonuc
Redis, basit bir onbellek cozumunun cok otesinde, modern yazilim mimarilerinin merkezi bir bilesenine donusmustur. Zengin veri yapilari, dusuk gecikme suresi ve genis ekosistemi ile onbelleklemeden olay islemesine, oturum yonetiminden gercek zamanli analize kadar pek cok alanda deger uretir.
Smart Maple olarak, Redis'i projelerimizde performans darbogazlarini ortadan kaldirmak, olceklenebilir mimariler kurmak ve kullanici deneyimini ust duzeye tasimak icin aktif olarak kullaniyoruz. Dogru strateji secimi, is yukune uygun veri yapisi kullanimi ve yuksek erisilebilirlik yapilandirmasi ile Redis, kurumsal uygulamalarinizin performans omurgasini olusturabilir. In-memory veritabani cozumleri ve Redis entegrasyonu konusunda destek almak icin Smart Maple ekibiyle iletisime gecebilirsiniz.
Related Articles
MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma
Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı
Read MoreLLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]
LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek
Read MoreBilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI
Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri
Read More
