Redir nedir, ne degildir
Redis Nedir, Nasıl Kullanılır?
Redis Nedir, Ne değildir?

Redis nedir sorusunun yanıt olarak; açık kaynak gelişmiş key-value(anahtar-değer) deposudur demek sanırız yanlış olmaz.

String(karakter dizisi), Hash(Map<String, String>), list(liste), set(küme), sorted set(sıralı küme) değerleri ile veri tutabildiğinden dolayı veri yapısı sunucusu olarakta adlandırılır.

Aşağıda yer alan işlemleri çok küçük operasyonlar ile yapabiliriz.

String’e string eklemek için.(APPEND)
Hash içinde değer arttırabilmek.(HINCRBY)
Listeye ekleme yapmak.(LPUSH)
Set(küme) kesişimi bulmak.(SINTER)
Tekrar eden değerleri tek sayarak işlem yapmak.(SUNION)
Karşılaştırarak aradaki farkı bulmak.(SDIFF) 
Sıralanmış kümedeki en yüksek elemanı getirmek.(ZRANGEBYSCORE)

Redis nedir sorusunun yanıtını aldığımıza göre şimdi Redis’ in sahip olduğu özellikleri inceleyebiliriz.

Redis in sahip olduğu özellikler söyledir:
*Üstün performans elde etmek için, Redis bir In-memory(hafıza içi, RAM de) veri kümesi(dataset) olarak çalışır.
*Veri kaybı yaşamama benzer biçimde durumları sizin kullanımınıza gore yapılandırmalısınız. Sizin kullanımınıza bağlı olarak belli aralıklar ile verilerinizi kalıcı(persist) yapabilirsiniz yada her komut çağırımında da bu işlemi yapabilirsiniz.
*Çok hızlı engel oluşturmayan ilk senkronizsyon, otomatik tekrar bağlanma vb. şeklinde ayarlar ile gelen basit,düşük seviyeli kurulum ile master-slave(yedeklilik) desteği bulunmaktadır.

Redis destekleyen diller ise şöyledir:
C, C#, C++, Clojure, Common Lisp, D, Dart, emacs lisp, Erlang, Fancy, Go, Haskell, haXe, Io, Java, Lua, Node.Js, Objective-C, Perl, PHP, Pure Data, Python, Ruby, Scala, Scheme, Smalltalk, Tcl.

Yaşamdan bir kullanım örneği vermek gerekirse, farklı uygulamalardan gelecek olan alarmları Redis veritabanında toplayabilir ve kalıcılaştırabilirsiniz.

Redis resmi Adresi için TIKLAYINIZ.

Redis Nedir

Redis (Remote Dictionary Service) nedir?

C ile yazılmış, key-value şeklinde tasarlanmış bir NoSQL veritabanıdır. Veriyi bellekte tuttuğu için çok hızlı okuma ve yazma yapılır.

Redis Nedir ? (Remote Dictionary Service) Nedir?

C ile yazılmış, key-value şeklinde tasarlanmış bir NoSQL veritabanıdır. Veriyi bellekte tuttuğu için çok hızlı okuma ve yazma yapılır.

Veri yapısına nazaran NoSQL veritabanları
Döküman Tabanlı
En önemli özellikleri elastiki olmalarıdır. Bir anahtara karşılık gelen veriler döküman isminde olan nesnelerde tutulur. Dökümanlar çok sayıda alan içerebilir ve farklı alanlara haiz olabilirler. Nesneler genelde JSON formatındalardır.
* Anahtar / değer Tabanlı
küçük veriler için çok sayıda okuma ve yazma için uygundurlar. Caching (önbellek) için kullanılırlar.
* Çizge (Graph) Tabanlı
Veriler düğümler (node), ilişkiler (edge), özellikler (properties) şeklinde tutulurlar. Veriler arasındaki ilişkilerde saklanabilir. Kullanım alanları daha kısıtlıdır.
* Kolon Tabanlı
Yüksek okuma ve erişilebilirlik için tasarlanmıştır. Birden çok sunucuda dağıtık olarak çalışabilirler. Yazma işleminde kesinti yaşanmaz fakat dağıtık yapsınıdan dolayı kısa süreli veri tutarsızlığı (inconsistency) yaşanabilir.

CAP Teoremi
Bu teorem dağıtık bir sistemin aşağıdakilerden bir tek ikisine haiz olabileceğini söyler. -Tutarlılık (Consistency) Dağıtık sistemlerde verinin tüm düğümlerde her vakit aynı olmasıdır. -Ulaşılabilirlik (Availability) Sistemin tüm isteklere her zaman yanıt vermesidir. -Bölünebilme toleransı (Partition Tolerance) Düğümlerden birinin çalışmaması durumunda sistemin sorunsuz çalışmaya devam etmesidir.

(CA) İse neden (P) olamıyor
Sunucularınızın arasındaki ağ bağlantısı gitmiş. Siz gittiniz birinci sunucuya yazdınız, yukarıdaki resimde görüldüğü şeklinde diğer sunuculara verinin güncel halini gönderemedi. 2., 3. Sunucuya veriyi sorduğunuzda verinin olmadığını yada 1. Sunucu ile aynı olamadığını görmüş olacaksınız. Kısaca sistem CA olduğu vakit P(Partition Tolerance) olamıyor. Veriniz parçalanmaya toleranslı değil. Verinin doğruluğunun kesin olması ihtiyaç duyulan, satın alan işlemleri, finansal işlemler vb. Bu çok önemlidir. İlişkisel veritabanları ve transactional işlemler buna uygun veriler tutar.

(AP) İse niçin C olamıyor
2 sunucunuzun bulunduğunu düşünelim X kıymeti 2 sunucuda da bulunuyor. Sunucular arası ağınız çöktü. Sunuculardan birinde X kıymetini güncellediniz. Sorguladığınızda iki sunucu ayrı değer vereceği için bu durumda C(Consistent) olamıyor. Bir sunucu X kıymeti için 5 , bir diğeri 4 kıymetini dönebilir. Toplumsal medyadan twitter yada feysbuk akan verilerde bunlar kullanılabilir. Like sayısını düşünün o anda her ferdin doğru şekilde görmesi/görmemesi önemli değildir. Burada bu veriler parçalanarak tutulabilir. NoSQL veritabanlarından Cassandra, Dynamo benzer biçimde sistemler buna uygundur. Eventual Consistency yöntemi ile arkaplanda Node’lardaki veriler eşleştirilir. Bu eşleştirmeden önce meydana getirilen bir sorgularda veri değerlerinde tutarsızlıklar olabilir.

(CP) İse neden (A) olamıyor
Eğer amacınız hem tutarlılık, hemde verinin parçalara bölünerek kaydedilebilmesi ise. 3 sunucu arasında bağlantı koptuğu andan itibaren A (Availability) yazma özelliğiniz ortadan kalkacaktır. Eğer ki yazarsanız tutarlılığı bozarsınız. Bu yüzden yalnız okuma yapabilirsiniz bu durumda. MongoDB veritabanı benzer biçimde sistemler CP uygundur. Default’ta strongly consistent’ dır.
Redis veriler anahtar değer olarak tutar. Anahtarlar üzerinden değerlere ulaşılır.

Diğer Makalelerimiz için TIKLAYIN.

Detaylı Bilgi
free online course