Redis vs Valkey: In-Memory Veri Yapıları

Açık kaynak in-memory veri yapısı sunucusu Redis ve fork'u Valkey arasındaki farklar, veri tipleri, kalıcılık ve ölçekleme seçenekleri ele alınır.

Redis vs Valkey: In-Memory Veri Yapıları

Redis vs Valkey: In-Memory Veri Yapılarında Yeni Dönem

Uzun yıllar boyunca Redis, in-memory veri yapısı sunucularının tartışmasız kralıydı. Ancak 2024 yılının başında Redis'in lisans modelinde yaptığı değişiklik, ekosistemde büyük bir deprem etkisi yarattı. Bu değişiklik, topluluğun Redis 7.2.4 kod tabanını fork'layarak Valkey projesini başlatmasına yol açtı. Valkey, kısa sürede Linux Foundation çatısı altında güçlü bir topluluk desteği topladı ve bulut devlerinden (AWS, Google Cloud) ciddi bir destek gördü.

Bu yazıda, bu iki güçlü rakibi lisanslama, performans, veri yapıları, kalıcılık ve ölçekleme stratejileri açısından karşılaştıracak, hangi senaryoda hangi aracı seçmeniz gerektiğini ele alacağız.


1. Temel Fark: Lisanslama ve Yönetim Modeli

İki proje arasındaki en temel ve belirleyici fark, lisanslama modelidir.

Özellik Redis Valkey
Lisans Redis 8.0 ile birlikte Üçlü Lisans (Tri-license) BSD-3 Lisansı (Tamamen açık kaynak)
Yönetim Redis Ltd. şirketi tarafından yönetiliyor Linux Foundation çatısı altında topluluk tarafından yönetiliyor
Ticari Kısıtlama Bulut sağlayıcıları için ek lisans kısıtlamaları getiriyor Hiçbir ticari kısıtlama yok

Redis'in lisans değişikliği, özellikle büyük bulut sağlayıcılarının (AWS, Google, Azure) Redis'in en son sürümlerini hizmet olarak sunmasını zorlaştırdı. Bu durum, Google Cloud'un Memorystore for Redis'i 7.2 sürümünde dondurup geliştirmeyi Memorystore for Valkey'e kaydırmasına, AWS'nin ise ElastiCache'te Valkey desteği sunmasına neden oldu.


2. Performans Karşılaştırması: Rakamlar Ne Söylüyor?

Her iki proje de aynı kod tabanından türediği için temel performans benzerdir. Ancak fork sonrası her iki proje de kendi optimizasyonlarına başladı.

Valkey'in Öne Çıkan Performans Kazanımları:

  • Çoklu İş Parçacığı (I/O Multithreading): Valkey, Redis'in tek iş parçacıklı (single-threaded) modelinden ayrılarak G/Ç (I/O) işlemlerinde çoklu iş parçacığı desteği sunuyor. Bu, özellikle yüksek eşzamanlılık gerektiren senaryolarda büyük bir avantaj sağlıyor.

  • Yüksek Verim (Throughput): AWS Graviton3 tabanlı bir instance üzerinde yapılan testlerde Valkey 8.0, saniyede 1.19 milyon istek (1.19M RPS) işleyerek bir önceki sürümüne göre %230'luk bir artış gösterdi.

  • Bellek Verimliliği: 50 milyon kayıt üzerinde yapılan bir testte Valkey 3.77 GB bellek tüketirken, Redis 4.83 GB bellek tüketti. Bu, Valkey'in %28 daha az bellek kullandığını gösteriyor.

  • Yazma Performansı: Aynı testte Valkey, yaklaşık saniyede 570 bin ekleme (insert) işlemi yaparken, Redis bu değerin ~%7 altında kaldı.

Redis tarafı ise ticari sürümlerinde (Redis Enterprise) ve bulut hizmetlerinde farklı optimizasyonlar sunmaya devam ediyor. Ancak açık kaynak tarafında, Valkey'in performans hamleleri dikkat çekici.


3. Veri Yapıları (Data Structures)

Her iki proje de aynı temel kod tabanına sahip olduğu için temel veri yapıları büyük ölçüde aynıdır. Her ikisi de aşağıdaki zengin veri yapılarını destekler:

  • String: Temel anahtar-değer çifti.

  • Hash: Alan-değer (field-value) çiftleri, nesne depolamak için ideal.

  • List: Sıralı, tekrarlanabilir öğe listesi (kuyruk ve yığın işlemleri).

  • Set: Sırasız, benzersiz öğe koleksiyonu.

  • Sorted Set: Skor (score) değerine göre sıralanmış benzersiz öğe koleksiyonu (lider tabloları için ideal).

  • Stream: Log benzeri, zaman serisi veri akışları (event sourcing, mesaj kuyruğu).

  • Bitmap / HyperLogLog / Geospatial: Özel kullanım senaryoları için gelişmiş yapılar.

Kritik Fark: Redis, ticari sürümlerinde ve bazı modüllerinde Valkey'de bulunmayan 150'den fazla ek komut ve 8 yeni veri yapısı sunmaktadır. Valkey ise bu tür özellikleri ayrı, BSD lisanslı modüller olarak sunmayı tercih etmektedir. Açık kaynak Redis OSS (7.2.x) ile Valkey arasında ise veri yapıları ve komut seti açısından %100 uyumluluk vardır.


4. Kalıcılık (Persistence) Seçenekleri

Redis ve Valkey, verileri diskte kalıcı hale getirmek için aynı iki temel mekanizmayı sunar:

  • RDB (Redis Database Backup): Belirli aralıklarla (ör. her 5 dakikada bir) verinin tam bir anlık görüntüsünü (snapshot) diske yazar. Hızlıdır ancak son snapshot'tan sonraki değişiklikler kaybolabilir.

  • AOF (Append Only File): Her yazma işlemini (SET, HSET vb.) bir log dosyasına ekler. RDB'ye göre daha dayanıklıdır ancak dosya boyutu daha büyük olabilir ve performansı etkileyebilir.

  • RDB + AOF Kombinasyonu: En güvenli yaklaşım. Hem hızlı kurtarma (RDB) hem de en güncel veri (AOF) sağlar.

Her iki proje de bu mekanizmaları aynı şekilde destekler. Valkey, Redis 7.2.4'ten forklandığı için tüm kalıcılık özellikleri birebir aynıdır.


5. Ölçekleme (Scaling) Stratejileri

A. Yatay Ölçekleme (Horizontal Scaling) - Cluster Mode

Her iki proje de Cluster Mode ile yatay ölçekleme desteği sunar:

  • Redis Cluster: Verileri birden fazla düğüme (node) otomatik olarak parçalar (sharding). Her düğüm verinin bir kısmından sorumludur.

  • Valkey Cluster: Redis Cluster ile tamamen uyumludur. Aynı protokolü ve aynı istemci kütüphanelerini kullanır.

B. Dikey Ölçekleme (Vertical Scaling) - Çoklu İş Parçacığı

Bu noktada Valkey öne çıkar:

  • Redis: Geleneksel olarak tek iş parçacıklıdır (single-threaded). Redis 6.0 ile G/Ç işlemleri için çoklu iş parçacığı desteği gelmiş olsa da, komut işleme hala tek iş parçacıklıdır.

  • Valkey: G/Ç işlemlerinde çoklu iş parçacığı desteğini daha ileri taşımıştır. Bu, özellikle yoğun okuma (read-heavy) iş yüklerinde daha iyi ölçeklenebilirlik sağlar.

C. Yönetilen Bulut Hizmetleri (Managed Services)

  • Redis: AWS ElastiCache for Redis, Azure Cache for Redis, Google Cloud Memorystore for Redis.

  • Valkey: AWS ElastiCache for Valkey, Google Cloud Memorystore for Valkey.


6. Redis'ten Valkey'e Geçiş (Migration)

Valkey'in en büyük gücü, Redis ile %100 uyumlu olmasıdır. Bu, geçiş sürecini son derece basit hale getirir:

  1. Hiçbir kod değişikliği gerekmez: Tüm Redis istemci kütüphaneleri (StackExchange.Redis, ServiceStack.Redis, vs.) Valkey ile çalışır.

  2. Konfigürasyon değişikliği: Sadece bağlantı endpoint'ini (host/port) Valkey sunucusuna yönlendirmek yeterlidir.

  3. Otomatik geçiş araçları: Bazı Linux dağıtımları (ör. Ubuntu 24.10), Redis'ten Valkey'e otomatik konfigürasyon ve veri geçişi sağlayan valkey-redis-compat paketini sunmaktadır.


7. Hangi Senaryoda Hangisi?

Senaryo Öneri
Yeni bir projeye başlıyorsanız ve tamamen açık kaynak BSD lisanslı bir çözüm istiyorsanız Valkey
Redis Enterprise'ın ticari özelliklerine (Redis Data Integration, Query Engine, Flex) ihtiyacınız varsa Redis (ticari sürüm)
Yoğun okuma iş yükleri, yüksek eşzamanlılık ve en iyi bellek verimliliği sizin için kritikse Valkey
Bulut sağlayıcınızın yönetilen hizmetini kullanmak istiyorsanız ve Valkey desteği varsa Valkey (AWS, GCP)
Redis OSS 7.2.x ile uyumluluğu bozmadan devam etmek istiyorsanız Valkey (birebir uyumlu)
En geniş ekosistem, en olgun modül desteği ve kurumsal destek sizin için öncelikliyse Redis (ticari veya OSS 7.2.x)

Sonuç

Redis ile Valkey arasındaki rekabet, in-memory veri depolama dünyasında yeni bir dönem başlattı. Redis, uzun yıllara dayanan olgunluğu, geniş ekosistemi ve ticari sürümlerinde sunduğu gelişmiş özelliklerle güçlü konumunu koruyor. Valkey ise tamamen açık kaynak lisansı, Linux Foundation güvencesi, daha iyi bellek verimliliği ve çoklu iş parçacığı desteği ile özellikle bulut çağında güçlü bir alternatif haline geldi.

Her iki proje de aynı temel veri yapılarını ve protokolleri paylaştığı için, teknik bir geçiş neredeyse hiç maliyet gerektirmiyor. Seçim, lisanslama tercihlerine, iş yükü gereksinimlerine ve uzun vadeli stratejik hedeflere bağlı olacaktır. Özellikle .NET geliştiricileri için, StackExchange.Redis gibi mevcut Redis istemcilerinin Valkey ile sorunsuz çalışması, bu geçişi oldukça cazip kılmaktadır.

Tüm yazılar