blog posts

Redis önbelleği nedir?

Redis, NoSQL veritabanları için kullanıcı memnuniyetinde 4. sırada yer alan en popüler anahtar/değer veritabanlarından biridir, Redis’in popülaritesi artmaya devam etmektedir ve birçok şirket, veritabanı yöneticileri vb . roller için Redis geliştiricileri aramaktadır .

Redis, site ziyaretçileri ile site yöneticileri arasında veritabanı, önbellek ve aracı olarak kullanılan popüler, hızlı, bellek içi, açık kaynaklı bir veri depolamadır.

Redis, hızlı okuma ve yazma işlemleri, zengin veri türleri ve bellek yapısı nedeniyle site ziyaretçileri ve site yöneticileri arasında veritabanı, önbellek ve aracı olarak kullanılan açık kaynaklı, bellek içi veri yapısı deposudur. ; Yüksek performanslı ve ölçeklenebilir web uygulamaları geliştirmek için idealdir.

Bu yazımızda Redis’ten, faydalarından ve kullanım alanlarından bahsetmek istiyoruz; Bu kavrama aşina olmayan çoğunuz için mutlaka faydalı olacaktır, o yüzden bizi takip etmeye devam edin.

Redis nedir?

Uzak Sözlük Sunucusu anlamına gelen Redis , hızlı, açık kaynaklı, bellek içi, anahtar-değer veri depolama alanıdır. Daha basit bir ifadeyle: Aslında Redis önbelleği, sunucuların RAM’inde bulunan bir tür veri yapısıdır . ve veriler  geçici olarak burada saklandıkları şekilde saklanır.

Proje, Redis’in baş geliştiricisi Salvatore Sanfilippo’nun İtalyan girişiminin ölçeklenebilirliğini geliştirmek istemesiyle başladı; Şu anda veritabanı, önbellek ve mesaj aracısı olarak kullanılan Redis’i 2006 yılında geliştirdi.

Normal sitelere göre yükleme hızı daha düşük olan bir web uygulamanız olduğunu ve sitenin yüklenmesinin yaklaşık 30 ila 60 saniye sürdüğünü varsayalım.Bu arada Redis hizmetini sitenize bağlayarak önbellekleme işlemlerini gerçekleştirebilir ve böylece bilgilerin en hızlısıdır Modun kendisi bir şekilde Ram aracılığıyla yüklenir ve istemciye görüntülenir.

Redis, milisaniyenin altında yanıt süreleri sağlar ve oyun, reklam teknolojisi, finansal hizmetler, sağlık hizmetleri ve Nesnelerin İnterneti gibi sektörlerdeki gerçek zamanlı uygulamalar için saniyede milyonlarca isteğe güç sağlar.

Bugün Redis, hızlı performansından dolayı Stack Overflow tarafından beş yıl üst üste geçici veritabanı olarak adlandırılan, günümüzün en popüler açık kaynak motorlarından biridir. Redis, depolama, oturum yönetimi, oyun, skor tabloları, analitik ve gerçek zamanlı analiz, jeouzaysal, yolculuk, sohbet/mesaj, medya akışı ve alt programlar.

AWS, Redis’i çalıştırmak için tam olarak yönetilen iki hizmet sunar; Amazon MemoryDB for Redis, ultra hızlı performans sunan, Redis uyumlu bir bellek içi veritabanı hizmetidir, Amazon ElastiCache for Redis ise birincil veritabanlarındaki ve veri depolarındaki verilere mikrosaniyelik gecikme süresiyle erişim sağlayan, tam olarak yönetilen bir önbellek hizmetidir .

Gelişmiş bir NoSQL anahtar/değer veri deposudur ve anahtarları dizeleri, karmaları, listeleri, koleksiyonları, sıralı kümeleri, bit eşlemleri ve hiperlogları içerdiğinden genellikle veri yapısı sunucusu olarak anılır; Redis’in okuma ve yazma işlemleri, verileri geçici bellekte sakladığından çok hızlıdır; Veriler ayrıca diske kaydedilebilir veya belleğe döndürülebilir.

Redis, verilerini geçici bellekte sakladığından çoğunlukla önbellek olarak kullanılır. Redis’i kullanan büyük kuruluşlardan bazıları Twitter, GitHub, Instagram, Pinterest ve Snapchat’tir.

 

Anahtar değer deposu veya veritabanı

Anahtar/değer veritabanı, verileri depolamak için basit bir anahtar/değer yöntemi kullanan, ilişkisel olmayan bir veritabanı türüdür.

Hem anahtarlar hem de değerler, basit nesnelerden karmaşık bileşik nesnelere kadar herhangi bir şey olabilir, birçok anahtar değerli veritabanı bölümlenebilir, bu da diğer veritabanlarının başaramayacağı ölçeklerde yatay ölçeklendirmeye olanak tanır; Örneğin, mevcut bir bölümün kapasitesi dolarsa ve daha fazla depolamaya ihtiyaç duyulursa Amazon DynamoDB, bir tabloya ek bölümler ayırır.

Redis önbellek karşılaştırması

Redis’in istemci tarafı önbelleğe alması “izleme” olarak da bilinir, çünkü Redis veri yapısı tabanlı bir çözümdür; Redis’te önbelleğe alma dizeler, karmalar, listeler, kümeler, sıralı kümeler olabilir. Akışları ve diğer birçok veri yapısını kullanır ve ayrıca siz de Önbelleğe okuma ve yazmanın Redis’te GET ve SET komutlarının kullanılmasını gerektirdiğini bilmeniz gerekir.

Bu uygulama doğru şekilde uygulanırsa Redis’teki önbellek, uygulamanın performansını önemli ölçüde artırabilir; Peki Redis depolama alanı diğer seçeneklerle nasıl karşılaştırılıyor?

Redis genellikle başka bir açık kaynak anahtar bellek deposu olan Memcached ile karşılaştırılır; InfoWorld’e göre Memcached de Redis gibi düzinelerce programlama dilini destekleyen popüler bir önbellekleme motorudur; ancak Redis neredeyse tüm önbellek kullanım durumları için en iyi seçimdir; Memcached, HTML kod parçacıkları gibi nispeten küçük ve statik veriler için daha iyi olsa da.

Depolama için Memcached yerine Redis’i tercih etmenin nedenleri şunlardır:

  • Redis birden fazla önbellek temizleme ilkesi sağlarken Memcached yalnızca LRU’yu (son zamanlarda kullanılan) sağlar.
  • Redis’teki anahtar adları ve değerleri 512 MB’a kadar olabilirken Memcached’deki anahtar adları yalnızca 250 bayt olabilir.
  • Redis önbellekleri; listeler, kümeler, sıralanmış kümeler, bit eşlemler ve uzamsal dizinler dahil olmak üzere çok çeşitli veri yapılarını depolayabilir.

Not: Yüksek hızlı SSD’ler ile yüksek hızlı sanal sunucu hazırlamak için gerekli maddeleri aşağıdaki bağlantıdan kontrol edebileceğinizi belirtelim : Sanal sunucu satın alma .❗

Redis’in Avantajları

Verim

Redis, geleneksel veritabanlarının aksine, düşük gecikme süreli, yüksek verimli veri erişimine olanak tanır; bellek içi veri depolamanın diske gitmesine gerek yoktur ve motor gecikmesini mikrosaniyelere düşürür; Bu nedenle bellek içi veri depoları daha fazla işlemi ve daha hızlı yanıt sürelerini destekleyebilir; bu da bir milisaniyeden daha kısa ortalama okuma ve yazma işlemleriyle hızlı performans ve saniyede milyonlarca işlemin desteklenmesiyle sonuçlanır.

Esnek veri yapıları

Sınırlı veri yapıları sunan diğer anahtar/değer veri depolarının aksine Redis, uygulamanızın ihtiyaçlarını karşılayacak çok çeşitli veri yapılarına sahiptir. Redis veri türleri şunlardır:

  • Dizeler – Boyutu 512 MB’a kadar olan metin veya ikili veriler
  • Listeler – Eklenme sırasına göre dizelerden oluşan bir koleksiyon
  • Setler – kesme, birleştirme ve diğer set türlerinden farklı olma özelliğine sahip sırasız bir dizi dizi
  • Sıralanmış Kümeler – Bir değere göre sıralanan kümeler
  • Hash – Alanların ve değerlerin listesini depolamak için bir veri yapısı
  • Bitmapler – Bit düzeyinde işlemler sağlayan bir veri türü
  • HyperLogLogs – Bir veri kümesindeki benzersiz olayları tahmin etmek için olasılıksal bir veri yapısı
  • Akış – Veri yapısını günlüğe kaydeden bir mesaj kuyruğu
  • Coğrafi – Haritaların enlem ve boylamına dayalı girdiler

Basitlik ve kullanım kolaylığı

Redis, geleneksel olarak karmaşık kodları daha az ve daha basit satırlarla yazmanıza olanak tanır; Redis ile uygulamalarınızdaki verileri depolamak, bunlara erişmek ve kullanmak için daha az kod satırı yazarsınız. Aradaki fark, Redis kullanan geliştiricilerin geleneksel veritabanı sorgulama dillerinden farklı olarak basit bir komut dosyası yapısı kullanabilmesidir.

Örneğin Redis hash veri yapısını tek satır kodla verileri bir veri deposuna aktarmak için kullanabilirsiniz. Karma veri yapısı olmayan bir veri deposundaki benzer bir görev, bir formattan diğerine dönüştürmek için çok sayıda kod satırı gerektirir.

Redis, yerel veri yapılarına ve verilerinizi işlemek ve onlarla etkileşime geçmek için birçok seçeneğe sahiptir; Redis geliştiricileri için yüzün üzerinde açık kaynaklı istemci mevcuttur; desteklenen diller arasında Java, Python, PHP, C, C++, C#, JavaScript, Node.js bulunur. , Ruby, R, Go ve çok daha fazlası…

Tekrarlama ve dayanıklılık

Redis, ilkel bir çoğaltma mimarisi kullanır ve verilerin birden çok çoğaltma sunucusuna kopyalanabildiği eşzamansız çoğaltmayı destekler; Süreklilik açısından Redis, belirli bir noktaya yedeklemeleri (Redis veri kümelerinin diske kopyalanması) destekler.

Redis, dayanıklı ve uyumlu bir veritabanı olacak şekilde tasarlanmamıştır; dayanıklı ve uyumlu bir Redis veritabanına ihtiyacınız varsa Amazon MemoryDB for Redis’i göz önünde bulundurun.

MemoryDB, verileri birden fazla Erişilebilirlik Alanında (AZ) depolayan dayanıklı bir işlem günlüğü kullandığından, bunu birincil veritabanınız olarak kullanabilirsiniz, MemoryDB, sağlayıcıların ayrı bir önbellek yönetme konusunda endişelenmenize gerek kalmadan Redis API’sini kullanmasını sağlamak için özel olarak tasarlanmıştır. , veritabanı veya temel altyapı.

  Sanal sunucuyla ping’i azaltmak için yöntemlere tıklayın

Yüksek kullanılabilirlik ve ölçeklenebilirlik

Redis, birincil düğümde veya küme topolojisinde temel bir kopya mimarisi sağlar; Bu, tutarlı performans ve güvenilirlik sağlayan yüksek düzeyde kullanılabilir çözümler oluşturmanıza olanak tanır.

açık kaynak

Redis, AWS tarafından da desteklenen açık kaynaklı bir hizmettir, Redis açık standartları temel alır, açık veri formatlarını destekler ve zengin bir istemci kümesine sahiptir.

 

Redis’in popüler kullanım örnekleri

kaydetmek

Başka bir bakış açısına göre Redis, veri erişim gecikmesini azaltmak, verimi artırmak ve bir veritabanından ve ilişkisel veya NoSQL uygulamasından gelen yükü azaltmak amacıyla yüksek düzeyde kullanılabilir bir bellek içi önbellek uygulamak için mükemmel bir seçimdir.

Redis, sık talep edilen görevleri milisaniyenin altındaki yanıt sürelerinde sunarak, daha fazla masrafa yol açmadan daha yüksek yükler için kolayca ölçeklendirme yapmanıza, sorgu sonuçlarını veritabanında saklamanıza, kalıcı oturum depolamaya, web sayfasını önbelleğe almaya ve nesne önbelleğe almaya olanak tanır. görseller, dosyalar ve bulut verileri Redis’teki popüler depolama örnekleridir.

Sohbet, mesajlaşma ve sıraya alma

Redis, Pub/Sub’ı kalıp eşleştirme ve listeler, sıralanmış kümeler ve karmalar gibi çeşitli veri yapılarıyla destekler; Bu aynı zamanda Redis’in yüksek performanslı sohbet odalarını, gerçek zamanlı yorum akışlarını, sosyal medya akışlarını ve sunucular arası iletişimi desteklemesine de olanak tanır. Redis Listesi veri yapısı, hafif bir sıranın uygulanmasını kolaylaştırır.

Listeler, engelleme işlevi sunarak onları güvenilir bir mesaj aracısı veya döngüsel liste gerektiren çeşitli uygulamalar için uygun hale getirir.

Oyun skor tabloları

Redis, gerçek zamanlı skor tabloları oluşturmak isteyen oyun geliştiricileri arasında popüler bir seçimdir; kullanıcıların puanlarına göre sıralı bir liste korurken öğe benzersizliği sağlayan Redis Sıralı Küme veri yapısını kullanmanız yeterlidir; Gerçek zamanlı bir sıralama listesi oluşturmak, kullanıcının puanını her değiştiğinde güncellemek kadar kolaydır.

Zaman damgalarını nokta olarak kullanarak zaman serisi verilerini yönetmek için sıralanmış koleksiyonları da kullanabilirsiniz.

Toplantı mağazası

Yüksek kullanılabilirliğe ve kalıcılığa sahip bir bellek içi veri deposu olan Redis, İnternet ölçeğindeki uygulamalar için oturum verilerini depolamak ve yönetmek amacıyla uygulama geliştiricileri arasında popüler bir seçimdir. Kullanıcı profilleri, kimlik bilgileri, oturum durumu ve kullanıcı verileri gibi oturum verilerinin yönetimini sağlar. spesifik kişiselleştirme.

Zengin medya oynatma

Redis, canlı akış kullanım durumları için hızlı, bellek içi bir veri deposu sağlar; Redis, kullanıcı profilleri ve görüntüleme geçmişi hakkındaki meta verileri, milyonlarca kullanıcı için kimlik doğrulama bilgilerini/belirteçlerini ve manifest dosyalarını depolamak için kullanılabilir. milyonlarca mobil ve masaüstü kullanıcısına aynı anda.

Coğrafi

Redis, uygun ölçekte ve hızda gerçek zamanlı konumsal veri yönetimi için bellek içi veri yapıları ve operatörleri sağlar. GEOADD, GEODIST, GEORADIUS ve GEORADIUSBYMEMBER gibi komutlar, Redis ile coğrafi uzamsal verilerin gerçek zamanlı olarak saklanmasını, işlenmesini ve analiz edilmesini kolay ve hızlı hale getirir. Sürüş süresi, sürüş mesafesi ve ilgi çekici yerler gibi konuma dayalı özellikleri uygulamalarınıza eklemek için Redis’i kullanabilirsiniz.

Makineyi öğrenmek

Modern veri odaklı uygulamalar, muazzam miktardaki veriyi, çeşitliliğini ve hızını hızlı bir şekilde işlemek ve karar almayı otomatikleştirmek için makine öğrenimini gerektirir. Oyun ve finansal hizmetlerde dolandırıcılık tespiti, reklam teknolojisinde gerçek zamanlı teklif verme ve flört ve araç paylaşımında eşleştirme gibi kullanım durumları için, canlı verileri işleme ve onlarca milisaniyede karar verme yeteneği kritik öneme sahiptir.

Redis, makine öğrenimi modellerini hızlı bir şekilde oluşturmak, eğitmek ve dağıtmak için size hızlı bir bellek içi veri deposu sağlar.

Gerçek zamanlı analiz

Redis, gerçek zamanlı verileri milisaniyenin altında bir gecikmeyle almak ve işlemek için bellek içi veri deposu olarak Apache Kafka ve Amazon Kinesis gibi akış çözümleriyle birlikte kullanılabilir; Redis, sosyal medya, reklam hedefleme, kişiselleştirme ve Nesnelerin İnterneti gibi gerçek zamanlı analiz kullanım durumları için ideal bir seçimdir.

 

Redis veri türleri

Redis bir anahtar-değer deposudur ancak dizeler dışındaki değerler olarak birçok veri yapısı türünü destekler; Redis’teki bir anahtar, maksimum boyutu 512 MB olan güvenli bir ikili dizedir.

Aşağıda değerlerde desteklenen veri türleri için de açıklamalarımız olacak:

alan

Redis’teki bir dize bir bayt dizisidir. İkili olarak güvenlidirler, dolayısıyla herhangi bir sonlandırıcı karakter tarafından belirlenmeyen sabit bir uzunluğa sahiptirler; bir Redis dizesinde 512 MB’a kadar depolayabilirsiniz; Metin, tamsayılar, kayan noktalar, videolar, resimler veya ses dosyaları gibi her türlü veriyi saklayabilir.

liste

Redis’teki liste, ekleme sırasına göre sıralanan dizelerin bir listesidir, böylece öğeler bağlantılı bir listede saklanır. 500 kayıttan oluşan bir listeye bir öğe eklememiz gerekiyorsa, öğeyi 50.000 kayıttan oluşan bir listeye eklemek de aynı süreyi alacaktır.

Koleksiyonlar

Redis’teki koleksiyonlar sırasız bir dize koleksiyonudur. Bu değer türü Liste’ye benzer, ancak kümelerin tekrarlanmasına izin verilmez ve öğeler herhangi bir sıraya göre sıralanmaz. O(1)O(1) zaman karmaşıklığında üyeleri ekleyebilir veya kaldırabilirsiniz.

Koleksiyonlar, benzersizliğin önemli olduğu verileri depolamak istediğimizde kullanışlıdır. Örneğin, bir web sitesine gelen tekil ziyaretçi sayısını depolamak.

Sıralanmış koleksiyonlar

Elemanları Sıralanmış Küme değer tipiyle sıralayabiliriz; İradenin her unsuru, nokta dediğimiz bir sayıyla ilişkilendirilir. Bu, sırayı belirtir.

Doğramak

Redis’te karma değer türü bir alan-değer çiftidir; Nesneleri temsil etmek için kullanılırlar, ancak birçok öğeyi saklayabilirler ve diğer görevler için de faydalıdırlar; karma çok az yer kaplar, böylece küçük bir karma örneğinde milyonlarca nesneyi depolayabilirsiniz.

Öğrencilerin notlarıyla ilgili bilgileri depolamak istediğimizi varsayalım; Konu bir anahtar olabilir, değer ise alanın öğrencinin adı ve notunun değeri olduğu bir alan-değer çifti olabilir.

Redis’te verilerin çoğaltılması

Veriler sunucuda saklandığında ve sunucu çöktüğünde veriler kaybolabilir.Bu sorunu önlemek için veri çoğaltma tekniğini kullanıyoruz; Bu, temel olarak, kayıpları veya arızaları önlemek için verilerin iki veya daha fazla sunucuda saklandığı anlamına gelir; kullanıcı istekleri yük dengeli olduğundan veri çoğaltma, sunucularımız üzerindeki yükü de azaltır.

Redis, sunucu tabanlı veri çoğaltma konusunda lider/takipçi yaklaşımını izliyor; Sunuculardan biri lider, diğer sunucular ise takipçiler olup hepsi lidere bağlıdır.

Takipçinin bağlantısı kesilirse otomatik olarak yeniden bağlanır ve lideri tam olarak kopyalar; bu iki şekilde yapılabilir:

  • Kısmi senkronizasyon
  • Tam senkronizasyon

Redis’te çoğaltma işlemi eşzamansız olduğundan, takipçi sunucular verileri eşzamansız olarak doğrular.

Dayanıklılık

Redis bellek içi bir veritabanı olduğundan veriler bellekte (veya RAM’de) depolanır; Sunucu çökerse depolanan tüm veriler kaybolur, Redis’in diskteki veriler için yedekleme mekanizmaları vardır, bu nedenle sunucu yeniden başlatıldığında veriler diskten belleğe yüklenir.

Redis’in iki kalıcılık seçeneği vardır:

  • RDB Kalıcılığı (Anlık Görüntü) : Bir diskteki verilerin anlık görüntüleri bir rdb dosyasında saklanır; dayanıklılık, verilerin diske ne sıklıkla temizlendiğine bağlıdır.
  • Yalnızca Dosya Ekleme (AOF) Kalıcılığı : Sunucu tarafından alınan her yazma işlemi bir dosyaya kaydedilir, böylece AOF dosyasındaki tüm komutlar yeniden başlatma sırasında yeniden yürütülür.

İstemci tarafı önbelleği

Bir istemci veriye ihtiyaç duyduğunda Redis sunucusundan bunu sağlamasını ister; bu da her istek için çok fazla bant genişliği gerektirir. Performansı artırmak için istemci tarafında en sık kullanılan anahtarların sonuçlarını önbelleğe alabiliriz.

Redis, izleme adı verilen istemci tarafı önbelleğe alma desteği sağlar. İki farklı yaklaşım vardır:

  • Varsayılan mod : Sunucu, hangi anahtarın hangi istemci tarafından kaydedildiğine ilişkin bilgileri saklar. Bir anahtar değişirse, sunucu mesajı yalnızca ilgili istemcilere gönderir.
  • Yayın modu : Sunucunun, istemciler tarafından saklanan anahtarları takip etmesine gerek yoktur. Bunun yerine, istemciler anahtar öneklere abone olur ve belirli bir önekle eşleşen bir anahtar kullanıldığında bildirim mesajları alırlar.