Redis ile In-Memory Caching ve Performans Optimizasyonu
Uygulama yanıt sürelerini milisaniyelere düşürmek için kullanılan Redis bellek içi veri yapısı deposunun mimarisi ve kullanım senaryoları.
Genel Bakış
Redis (Remote Dictionary Server), açık kaynaklı, veriyi bellekte (in-memory) tutan, inanılmaz hızlı bir anahtar-değer (key-value) deposudur. Genellikle veritabanı, önbellek (cache) ve mesaj aracısı (message broker) olarak kullanılır.
Sorun
Modern web uygulamalarında, her kullanıcı isteği için disk tabanlı ilişkisel bir veritabanına (PostgreSQL, MySQL) sorgu atmak sistem performansını ciddi şekilde düşürür. Özellikle aynı verilerin (örneğin popüler ürünler, döviz kurları, oturum bilgileri) sürekli okunması gerektiği durumlarda, veritabanının disk okuma (I/O) sınırları sistemin darboğaza girmesine neden olur.
Çözüm: Veriyi Bellekte Tutmak
Sık erişilen veriler, disk yerine RAM üzerinde çalışan Redis'e kaydedilir. Uygulama veriyi önce Redis'te arar (Cache Hit). Bulamazsa (Cache Miss) ana veritabanına gider, veriyi alır ve bir sonraki istek için Redis'e yazar.
Örnek Redis Kullanımı (Node.js):
const redis = require("redis");
const client = redis.createClient();
await client.connect();
// Veriyi 3600 saniye (1 saat) süreliğine önbelleğe al
await client.setEx("urun_katalogu", 3600, JSON.stringify(data));
Teknik Detaylar
Redis sadece basit string'ler değil; Hash, List, Set, Sorted Set gibi gelişmiş veri yapılarını da destekler. Tek bir thread (Single-threaded) üzerinde çalışır, bu nedenle arka planda bağlam geçişi (context switching) maliyeti olmadan saniyede milyonlarca isteği işleyebilir. Veri kalıcılığını (persistence) sağlamak için belirli aralıklarla RAM'deki veriyi diske yedekleyen RDB (Redis Database) ve her yazma işlemini günlüğe kaydeden AOF (Append Only File) mekanizmalarına sahiptir.
Sonuç
Redis, yüksek trafikli uygulamalarda veritabanı yükünü hafifletmek ve API yanıt sürelerini stabilize etmek için en etkili endüstri standardıdır. Ancak, belleğin pahalı bir kaynak olduğu unutulmamalı ve TTL (Time-To-Live) ayarları doğru yapılandırılmalıdır.