Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Redis Yazı Serisi 6 – Redis Nedir?

Merhaba,

Redis yazı dizisinin şu ana kadar olan içeriklerinde Distributed Caching’i daha net anlamlandırabilmek için cache altyapısını oluşturacak konuları değerlendirmiştik. Bu makalede ise artık Redis’e bir girizgah yapacağız ve ne olduğuna dair açıklamayla başlayacağız.

Redis Nedir?

Bir olguyu anlamlandırmak demek o olguyu temsil eden kavramın etimolojisini bilmek demektir. Tabi ki de yazılım dünyasının etimolojisi 3 günlük teknoloji ömrüne denk olduğu ve sektöre ait terminolojik kelimeler kendi aralarında ilişkisel bağ oluşturacak kadar çok fazla vakte sahip olamadıkları için kelimeler açısından zengin bir kök beklememek lazımdır.

Redis, REmote DIctionary Server(Uzak Sözlük Sunucusu) kelimelerinden oluşan, açık kaynak olan(open source) ve veri erişiminde olabilecek en hızlı yöntemi benimseyerek dataları memory’de tutan bir NoSQL veritabanıdır.

NoSQL olmasının yanında tutulacak veri türüne göre bünyesinde temel yapı türlerini barındırmaktadır. Bu özelliği diğer veritabanlarına nazaran Redis’i oldukça güçlendirmektedir. Ayrıca Redis’i tercih edilebilir kılan bir başka özelliği ise ilişkisel veritabanlarının tümünden hızlı olmasıdır.

Redis, distributed bir sistem olduğundan ve in-memory caching’e nazaran uygulamaya dair tüm instanceların cachelerini tekbir uzak memory’de tuttuğundan dolayı net veri tutarlılığı olan bir sistemdir.

Redis’in verileri bellekte tutan veritabanı olmasının diğer bir avantajı ise veri okuma ve yazma operasyonlarını milisaniyeler cinsinde gerçekleştirebiliyor olmasıdır. Bundan dolayıdır ki; Twitter, GitHub, Tumblr, Pinterest, Instagram, Hulu, Flickr ve The New York Times gibi dev markalar bu sunucuyu kullanmaktadırlar.

Redis her ne kadar caching amaçlı kullanılan bir server olsada kullanıcıların session bilgilerinide tutabildiğimizden dolayı Session Store, Pub/Sub paradigmasını desteklemesinden dolayı Publish–Subscribe Pattern, uygulamada sıralı bir şekilde işlenecek olan mesajları ölçeklendirilebilir hale getirebilmesinden dolayı Queues, sayaç olabilmesinden dolayı Counters senaryolarında kullanılabilmektedir.

Veri Kalıcılığı(Persistence)

Redis verileri memory’de tutan bir sistem olsada kalıcı verileri destekleyebilen bir sistemdir. RAM’de kalıcı veriden bahsetmek pekte mümkün olmadığından Redis sistemlerde veriler çeşitli yöntemlerle sabit disklere kaydedilebilmektedir. Bunun için ‘Snapshotting’ ve ‘Slave’ olmak üzere iki yaklaşım benimsenmektedir; ‘Snapshotting’, belirli zaman periyotlarında alınan snapshot’lar diske kaydedilmesidir. ‘Slave’ yönteminde ise veriler slavelere kaydedilip masterlardaki yük hafifletilerek gerçekleştirilir.

Pipelining

Redis pipelining özelliği sayesinde istenilen verilerin tamamını tek seferde getirerek olabildiğince hızımıza hız kazandıran performans açısından avantajlı bir sistemdir.

Kısaca özetlersek;

Avantajları

  • Klasik veritabanlarındaki CPU kullanımını memory’e kaydırarak CPU maliyetini azaltmaktadır.
  • Memory üzerinde tutulan dataların işlenmesi çok hızlı olacağı için performans artışı sağlamaktadır.
  • Açık kaynaktır.(open source)
  • Günümüzde birçok programlama dili tarafından desteklenmektedir.
  • Döküman açısından zengindir.
  • Temel veri türlerini desteklemektedir.
  • Senkron çalışmaktadır. Bu yüzden aşırı derecede hızlıdır.
  • Dataları memory dışında sabit diskede kaydedebilmektedir.

Dezavantajları

  • Tutulacak veriyi RAM’in kapasitesi belirlemektedir.
  • İlişkisel veritabanı sistemlerinde olduğu gibi raporsal nitelikte karmaşık sorguları desteklemez.
  • Transaction olmadığı için süreçte alınan hatalar telafi edilemez.

Kullanım Alanları

  • Caching
  • Session Storage
  • Queues
  • Pub/Sub
  • Counter

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. 15 Nisan 2020

    […] Redis Yazı Serisi 6 – Redis Nedir? […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir