ozztech_logo_white

Redis Nedir?

Günümüzde en çok kullanılan anahtar-veri veritabanlarından  birisidir. Redis aslında bakarsanız bir cacheleme servisidir diyebiliriz.

Kısaca anlatmak gerekirse. Twitter,Github,Snapchat,StackOverflow gibi büyük firmaların kullandığı bu database işlevine geçelim . Kullanıcı ve database arasında sorgular gerçekleşir 10 kullanıcı veya çok daha fazlası database’den veri çekmek için sorgu atıyor database bir bellekte tutulduğu için ram donanımına göre çok daha yavaş çalışır. Örnek olarak mesela onlarca kullanıcı sürekli Ürünler adında ki nesneyi almak için database’den sorgu atıyor bu hem veri merkezimi hem de sunucumuza trafik oluşturarak sunucunun yorulmasını sağlar ve performans düşüklükleri yaşanır. Cache mantığında kısa süreli bellek (RAM) üzerinde tutulur bir kullanıcı database içinden bir kere ürünler verisini çektiğinde bu veri kısa süreli bellekte durur hem sunucumuz yorulmaz hem database çalışması aksamaz, geri kalan kullanıcılar her istek attığında ürünler verisini kısa süreli bellek(RAM) üzerinden alır hem daha hızlı performansı yüksek şekilde kullanıcı isteğine ulaşır hem de işletmeyi maliyetten kurtarır. .Net üzerinde

 Caching Dikkat Edilmesi Gerekenler

Caching mantığı  orijinal verileri kopyalama üzerinedir. Eğer database üzerinde orijinal verilerde bir değişiklik olursa cachelenmiş veriler eski versiyon olarak kalır bu yüzden cachelenmiş veriler bir süre sonra güncellenmesi gereklidir. Güncellenmezse sistemde sorunlara yol açabilir.

Cache çeşitleri ve Absolute time

On-Demand Cach Nedir?

Burada istek üzerine kurulu bir cache yapısı vardır.Eğer bir kullanıcı uygulama ayağı kaldırıldıktan sonrasında istek atarasa o veri cachelenir.

Pre-Populate Cach  Nedir ?

Bazı verile değişken olduğu için uygulama ayağa kalktıktan sonrasında istek atılır. Database içerisinde bazı veriler değiştirilmez veya çok nadir üzerinde işlem uygulanır bu gibi veriler için uygulama her ayağa kalktığında uygulamayla beraber cacheleme işleme yapılır.

Absolute Time Nedir ?

Yukarıda anlattığımız gibi veriler güncel kalmayabilir bunun için cachelediğimiz verilerin ne kadar süre kalacağını belirttiğimiz kısımdır süre bittikten sonra otomatik cache silinir.

Microsoft benzer cache mekanizmasını kullanıyor neden Redis kullanıyoruz Redis kullanmak için nedenler:

 Yüksek performans

 Redis yukarıda bahsettiğimiz üzere verileri hdd veya ssd üzerinde tutmak yerine bir cache metoduyla verileri kısa süreli bellek (RAM) üzerinde tutar.Neden hızlıdır çalışma mantığı olarak (RAM) donanım olarak daha hızlı çalıştığı için hem de kullanıcılar attığı isteklerin yarısı kısa süreli belleğe yarısı veritabanının asıl bulundu hdd veya ssd’lere gittiği için hem ikisinin üzerinde ki trafik azalır hem performası düşmez.Basit algoritmalar ile bu verim sağlanır.

In-Memory Veri Yapıları

Bellek üzerinde ki veriler <key,value> olarak tutulmaktadır. Anahtar üzerinde tutulan değerler Set, Sorted Set,Hash,List,String,Bitmaps,HyperLogLogs,Geostpatital Indexes gibi farklı veri yapılarıda tutulur.

Replication

Redis bilindiği üzere master slave mimarisini kullanmaktadır.Master sleve mimarisi nedir.Türkçe çevrilişiyle efendi-köle anlamına gelir peki nedir? Ana sunucu içinde bir çok veri bulunuyor,bu verileri slave’lere kopyalanır.Sunucunun içinde bu makine bir master burada ki veriler bir slave olarak seçtiğimiz’de  master sunucumuzun üzerindeki trafik azalarak üstünde ki yükü azaltırız. Bir slave yarıda kaldığında diğerine sen devam et diyebilirsin.Docker mantığında olduğu gibi güncelleme yaptığımızda diğer slave’lerimizde otomatik güncellenir.

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

Redis mantığımızda verileri kısa süreli bellek(RAM) içerisinde tutar. Herhangi bir plansız kapanmada,elektrik veya donanım arızalarında verileri kaybetmemek için iki yöntem uygulamaktadır bunlar:

Point-in-time Snapshots:

Verileri database içinde olduğu gibi diskte yüksek yer kaplamasada anlık kopyalamalarını sağlar.Olası bir sistemsel hatada yapılan yanlışlıkla değişmelerde anında diğer kopyasına eriştiğimiz için bozulmaları sorunları engeller.

Append Only File:

Redis mantığında kısa süreli bellek olduğu için içine depoladığı veriler uçucu bir hale geliyor.Bu verilerin depolanmasını sağlanması için kullandığımız Append Only File kısa tanım olarak bellek içi veri deposudur.

Çoklu Dil Desteği

Redis yazılım dilleri üzerinde bir çoğunda desteklenmektedir,bunlar;Java,Python,C,C++,C#,PHP,Javascript,Node.js,Ruby gibi bir çok aktif kullanıcısının çok olduğu dilleri desteklemektedir.

Redis Kullanım Örnekleri

Kuyruklama yapısı : Sunucuya istek attığımızda işlemler makineyi ne kadar zorlayacağına göre işlemin yapılması uzun sürebilir.Redis içerisinde bulunan kuyruk yapısı ile sıraya alıp makineyi aynı anda yormak yerine daha hızlı çalıştırması için sıralama sistemi uygular.

Session Yönetimi

Büyük bir e ticaret sisteminde veya buna benzer sistemlerde kullanıcı çok olduğu için oturum bilgilerini sayfalar arasında iletmek zorlaşıyor ama Redis sayesinde bu işlemlerde kolaylaşıyor.

Pub/Sub

Redis’in yapılarından biriside pub/sub işlevini destekler.

Some Example Data Types

Some String Data Command

Get Key

GetDel Key

Set Key value

Set Key second Value

Set Key offset value

Örnek ;

SET name Oguzcan  (oguzcan ismini verdim)

GET  name  (yukarıda tanımladığımız oğuzcan ismini aldık)

GETRANGE name 0 7  (oguzcan isminin uzunluğunu belirttik)

Some List Data Command

RPUSH key element [element….]

LRANGE key start stop

RPOP key [count]

LLEN key

BLOP key [key….] timeout

RPUSH persons Oguzcan Can Fatih Halit Dogukan (bir liste oluşturduk ve sağındaki isimleri listeye ekledik)

LRANGE person 0  –1  (0 –1 metodu rediste person listesi içinde dolaş komutudur)

SOME CONNECTION DATA COMMAND

Sunucu ve istemci bağlantılarının bulunduğu komutlar

AUTH [username] password

CLIENT ID

CLIENT INFO

CLIENT GETNAME

PING [message]

RESET

QUIT   

Genellikle kullanılanlar

QUIT

PING

AUTH password

Redis Docker Containerla Ayağa Kaldırma

Windows üzerinde Chocolatey ile kullanılır bazen versiyon sıkıntıları olmakta bu yüzden linux ortamında ayağa kaldırılan docker container üzerinde bu gibi bir sorunla karşılaşmayız.

Öncelikle linux komut ekranımızı açıyoruz daha sonra

“docker run –rm –p 1453:6379 –name rediscontainer –d redis”

Kodumuz ile redis imajını çeker ve container’ımızı bu şekilde ayağa kaldırabiliriz.

İlginizi Çekebilecek Makaleler​

LLM (Large Language Models) Nedir?

Günümüzde yapay zeka ve makine öğrenmesi, teknolojinin birçok alanında devrim niteliğinde ilerlemeler kaydetmiştir. Bu ilerlemelerin merkezinde yer alan büyük dil modelleri (LLM – Large Language

Devamı »
Message Broker Nedir?

Message broker, birçok farklı uygulama veya sistem arasında iletişim kurmak için kullanılan bir yazılım aracıdır. Bu araç, bir uygulama tarafından gönderilen mesajları bir veya daha

Devamı »
Loglama Nedir?

Loglama, bilgisayar sistemlerindeki olayları, hataları ve diğer önemli durumları kaydetme işlemidir. Bu kayıtlar, sistem yöneticileri ve geliştiriciler tarafından, sistemlerin işleyişini anlamak, hataları tespit etmek ve

Devamı »
Vcenter Üzerinden ESXI Upgrade’i Nasıl Yapılır?

Öncelikle herkese merhaba arkadaşlar, sizlere Vcenter üzerinde ESXI hostunuzu nasıl upgrade edeceğinizi anlatacağım. Öncelikle hangi versiyona yükselteceksek o versiyonun ISO dosyasını indiriyoruz. Ardından Vcenter’ımızı açıyoruz.

Devamı »