Medium üzerinde yayına aldığım ilk yazım olan Caching ve Cache Yöntemleri’nde Distributed Cache’den bahsetmiştim. Hem bu nokta açısından hem de genel hatlarıyla bu yazı özelinde Redis (Remote Dictionary Server)’e bir bakış atalım istiyorum.
Redis kendisini, “The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.” şeklinde tanımlıyor. Tıpkı bu tanımlamada olduğu gibi Redis, günümüzde özellikle bir cache server ve bunun yanı sıra yaygın olarak bir NoSQL veri tabanı çözümü olarak kullanılıyor. Öyle ki DB-Engines’in verilerine göre bu yazının yazıldığı tarih (Mayıs 2022) itibari ile en popüler DB sistemleri sıralamasında MongoDB’nin ardında 6. sırada yer alıyor.
Kısacası Redis, “key-value” şeklinde verilerin tutulduğu, C dili ile yazılmış ve her bir kayıt için 512MB alan kullanımına izin veren bir veri tabanıdır.
Redis tarafından desteklenen veri tipleri ise;
String
List
Set
SortedSet
Hash
şeklinde sıralanabilir.
Neden Redis?
Redis, öncelikle gereksiz I/O işlemlerini ve CPU tüketimini azaltan, verileri RAM üzerinde tutarak hızlı sonuç veren performanslı bir veri tabanı sistemidir.
Kayıt edilen verilere bağlı olmak üzere bellekte kapladığı alan diğer sistemlere göre daha azdır.
Belirli yöntemlere (Redis Database ve Append Only File) bağlı olmak üzere bir Redis sunucusu kapanıp açılsa bile kayıt edilmiş veriler korunabilir. Böylelikle Distributed Cache yöntemi kapsamında bir cache server olarak kullanıldığı senaryoda Redis verilerin korunması anlamında pozitif sonuç doğurur.
Redis Database: Belirli aralıklarla Redis veri tabanına ait snapshotlar oluşturulur ve disk üzerine kayıt edilir. Sunucu üzerinde yeniden başlatma senaryosu uygulandığında bu kayıt kullanılır.
Append Only File: Redis üzerinde gerçekleşen her bir değişiklik anlık olarak kayıt altında tutulur ve sunucu üzerinde uygulanan herhangi bir yeniden başlatma senaryosunda bu kayıt kullanılır. Snapshot yöntemine göre belirli aralıklar yerine her bir değişiklikte kayıt üzerinde düzenleme yaptığı için veri kaybı noktasında daha güvenilir bir yöntemdir.
Ayrıca C#, Java, Python, Ruby, Go, PHP, C, C++ gibi birçok dil tarafında da desteklenmektedir.
Okuyanlara faydası olması dileğiyle. İyi çalışmalar.