Redis nedir?
Nosql veritabanlarının (mongodb, ravendb, cassandra, couchdb vb.) yaygın şekilde kullanılmaya başlaması ile sürekli gelişen veritabanı dünyasında Redis yüksek performansı sayesinde öne çıkmaya başladı.
NoSql (not only sql - sql ve daha fazlası), temel olarak ilişkisel olmayan ve key-value mantığı ile çalışan bir veri depolama sistemidir.
Redis, açık kaynak, in-memory tabanlı key-value mantığı ile çalışan bir veri depolama sistemidir. In-memory'den kasıt veriler memory (ram) üzerinde saklanır ve işlenir. Bu nedenle oldukça performanslıdır ve son zamanlarda sıkça tercih edilen bir nosql veritabanı olmuştur. Genelde Memcache benzeri bir yapıdır denir fakat Memcache ile karıştırmamak gerek çünkü Memcache verileri ram'de saklar ve işi bitince siler. Disk üzerinde herhangi bir işlem yapmaz. Fakat Redis belirlenen ayarlamalara göre belli zaman aralıklarında verileri diske yazar ve kalıcı olmasını sağlar.
Redis destekleyen platformlar
- Linux
- Windows (henüz resmi olarak desteklenmiyor fakat stabil çalışan bir sürümü var ve linux sistemindekine yakın performans veriyor.)
Redis destekleyen diller
- C, C++
- C#
- Lisp
- Java
- Node.js
- Perl
- Php
- Python
- Ruby
- Scala
- Ve daha birçok programlama dilini desteklemektedir. Tam listeye buradan ulaşabilirsiniz.
Redis'in avantajları
- Cpu ve disk kullanımını azaltır.
- Performansı artırır.
- Birçok veri türünü destekler
- Cluster başta olmak üzere sharding, sentinel ve replication gibi enterprise özelliklere sahiptir.
- Senkron çalışır.
Redis'in dezavantajları
- Senkron çalışmasından dolayı diğer nosql veritabanları ile karşılaştırıldığında (asenkron alternatifler) performans farkı ortaya çıkar.
- Veri boyutu ile doğru orantılı olarak ram ihtiyacınız artar.
- İlişkisel veritabanlarında olduğu gibi kompleks sorgu desteklemez. Basitçe join mantığı yoktur.
- Transaction desteklemez, yani transaction sırasında hata alınırsa geri dönülmez.
Redis nerelerde kullanılır?
- Cache (önbellek) sistemi
- Session (oturum) verileri
- Sayaçlar
- Kuyruk işlemleri
- vb ...
Redis vs MongoDB vs Memcache
Aşağıdaki içerikler İngilizce fakat ne kadar anlayabilirseniz okumanızı tavsiye ederim.
- Twitter Redis'i nasıl kullanıyor?
- Pinterest Redis'i nasıl kullanıyor?
- 11 farklı senaryo ile Redis kullanımı