Yazılım Mimarileri ve Tasarım Desenleri Üzerine

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ı

Dezavantajları

Kullanım Alanları

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

Mobil sürümden çık