Redis'in gelişmiş özellikleri hakkında derinlemesine konuşma

Redis veri yapısı

Redis yaygın olarak kullanılan veri türleri temel olarak aşağıdaki beş türü içerir:

Dize

Hash

Liste

Ayarlamak

Sıralanmış küme

Redis dahili olarak tüm anahtarları ve değerleri temsil etmek için bir redisObject nesnesi kullanır.

Dize, redisObject tarafından başvurulan, varsayılan olarak redis dahili depolamadaki bir dizedir. İncr, decr ve diğer işlemlerle karşılaştığında, hesaplama için sayısal bir değere dönüştürülür. Şu anda, redisObject öğesinin kodlama alanı int'dir.

Listenin uygulanması, çift bağlantılı bir listedir ve çalıştırılması daha uygun olan ters arama ve geçişi destekleyebilir, ancak bazı ek bellek yükü getirir. Redis'teki birçok uygulama, arabellek kuyrukları gönderme dahil, aynı zamanda bu veri yapısını kullanır .

Değere karşılık gelen Hash, aslında bir HashMap'tir. Aslında, iki farklı uygulama vardır: Hash'in daha az üyesi olduğunda, Redis, gerçek HashMap yapısını kullanmak yerine kompakt depolama için hafızadan tasarruf etmek için tek boyutlu bir dizi kullanacaktır. RedisObject değerinin kodlaması zipmap'dir.Üye sayısı arttığında, otomatik olarak gerçek bir HashMap'e dönüştürülür ve kodlama ht'dir.

Redis depolama

Redis, bir dizi farklı kalıcılık seçeneği sunar:

  • RDB Persistence, belirli aralıklarla veri kümelerinin anlık anlık görüntülerini gerçekleştirir.
  • AOF kalıcılığı, sunucu tarafından alınan her yazma işlemini kaydeder ve bu işlemler, sunucu orijinal veri kümesini yeniden oluşturmaya başladığında yeniden yürütülür. Ek olarak komutları kaydetmek için Redis protokolünün kendisiyle aynı formatı kullanın.

RDB'nin Avantajları:

  • RDB, Redis verilerinin son derece kompakt, tek dosyalık bir noktadan noktaya temsilidir.
  • RDB dosyaları yedekleme için çok uygundur.

RDB'nin dezavantajları:

  • Anlık görüntüler çok dayanıklı değil. Redis'i çalıştıran bilgisayar çalışmayı durdurursa, güç kablosu arızalanırsa veya örneğiniz yanlışlıkla sonlandırılırsa, Redis'e yazılan en son veriler kaybolur.
  • RDB'yi diskte tutmak için alt işlemleri kullanmak için, RDB'nin sık sık çatallanması gerekir. Veri kümesi büyükse, Fork zaman alıcı olur ve Redis'in istemciye hizmet vermeyi birkaç milisaniye içinde durdurmasına neden olabilir veya veri kümesi çok büyükse ve CPU performansı zayıfsa, bir saniye bile sürebilir.

Redis'in veri kümesini diske dökmesi gerektiğinde, aşağıdakiler gerçekleşir:

  • Redis çatalı. Artık bir çocuk sürecimiz ve bir ebeveyn sürecimiz var.
  • Alt süreç, veri kümesini geçici bir RDB dosyasına yazmaya başlar.
  • Alt süreç yeni RDB dosyasını yazmayı bitirdiğinde, eskisinin yerini alacaktır.

AOF'nin Avantajları:

AOF günlüğü yalnızca eklenebilen bir günlüktür, bu nedenle bir elektrik kesintisi meydana gelirse hiçbir sorun olmayacaktır.

AOF'nin dezavantajları:

  • AOF dosyaları genellikle aynı veri kümesinin eşdeğer RDB dosyalarından daha büyüktür.
  • Tam fsync stratejisine bağlı olarak, AOF, RDB'den daha yavaş olabilir.

Redis'in diskteki verileri senkronize etme sayısı. Üç seçenek vardır:

  • AOF'ye yeni bir komut eklendiğinde, fsync. Çok çok yavaş ve çok güvenli.
  • Saniyede Fsync. Yeterince hızlı (belki 2.4'teki anlık görüntü kadar hızlı) ve bir felaket meydana gelirse, 1 saniyelik veriyi kaybedebilirsiniz.
  • Asla fsync, sadece verilerinizi işletim sistemine verin. Daha hızlı, güvenli olmayan yöntem.

Günlük yeniden yazma, anlık görüntüler için kullanılan aynı yazma üzerine kopyalama tekniğini kullanır. Bu nasıl çalışır:

  • Redis çatalı, yani şimdi bir alt süreç ve bir üst süreç var.
  • Alt süreç, geçici bir dosyaya yeni bir AOF yazmaya başlar
  • Üst süreç, tüm yeni değişiklikleri bellek tamponunda biriktirir
  • Alt süreç dosyayı yeniden yazmayı bitirdiğinde, üst süreç sinyali alır ve bellek tamponunun içeriğini alt süreç tarafından oluşturulan dosyanın sonuna ekler.
  • Redis, eski dosyayı otomatik olarak yeni dosyaya yeniden adlandırır ve yeni verileri yeni dosyaya eklemeye başlar.

Redis işlemi

Redis tarafından sağlanan işlem mekanizması, geleneksel veritabanı işlemlerinden biraz farklıdır.Geleneksel veritabanı işlemleri aşağıdaki özellikleri korumalıdır: Atomiklik, Tutarlılık, İzolasyon, Dayanıklılık, kısaca ACID.

Atomiklik

Redis'in kendisi tarafından sağlanan tüm API'ler atomik işlemlerdir.

Ancak Redis, işlem yürütme sürecinin hata durumunda, yani geri alma işleminden vazgeçerek bir ödün verdi.

Resmi Redis belgesindeki açıklama şu şekildedir:

1. Redis işleminin başarısızlığının nedeni sadece gramer hataları veya yanlış veritabanı tipi işlemler olabilir.Bunlar, geliştirme düzeyinde bulunabilen ve üretim ortamına girmeyen sorunlardır, bu nedenle geri dönmeye gerek yoktur.

2. Redis'in dahili tasarımı basitliği ve yüksek performansı destekler, bu nedenle geri alma yeteneklerine gerek yoktur.

Tutarlılık

Tutarlılık, işlem bittikten sonra sistem verilerinin hala tutarlı olduğu anlamına gelir.

Redis, geri alma tasarımından vazgeçti ve temelde etkili veri tutarlılığı garantisinden vazgeçti.

İzolasyon

İzolasyon, işlem tamamlanmadan önce işlemin dışının işlemdeki veri değişikliklerini görememesini sağlar.

Redis, izolasyonu sağlamak için tek iş parçacıklı bir tasarım kullanır.

Dayanıklılık

Redis genellikle yalnızca bellek hesaplamaları ve işlemleri gerçekleştirir ve dayanıklılık garanti edilemez.

Ancak Redis, RDB ve AOF olmak üzere iki veri kalıcılık modu sağlar RDB kalıcılık işlemleri ve komut işlemleri senkronize edilmez ve işlemin sürekliliği garanti edilemez. AOF modu, her bir komutun yürütülmesinin, dosyaları diske yazmak için bir sistem çağrısı gerektirdiği anlamına gelir; bu, dayanıklılığı sağlayabilir, ancak Redis'in erişim performansını büyük ölçüde azaltacaktır.

Redis ustası ve köle

Redis'in master-slave yapısı, master-multi-slave veya kademeli bir yapı benimseyebilir:

Tam senkronizasyon

Redis tam replikasyonu genellikle Slavein başlatma aşamasında gerçekleşir ve ardından Slavein tüm verileri Mastera kopyalaması gerekir.

Belirli adımlar aşağıdaki gibidir:

1) Bağımlı sunucu ana sunucuya bağlanır ve SYNC komutunu gönderir;

2) Ana sunucu SYNC adını aldıktan sonra, RDB dosyasını oluşturmak için BGSAVE komutunu çalıştırmaya başlar ve daha sonra yürütülen tüm yazma komutlarını kaydetmek için tamponu kullanır;

3) Ana sunucu BGSAVE yürütüldükten sonra, anlık görüntü dosyasını tüm ikincil sunuculara gönderir ve gönderme sırasında yürütülen yazma komutlarını kaydetmeye devam eder;

4) Anlık görüntü dosyasını sunucudan aldıktan sonra, tüm eski verileri atın ve alınan anlık görüntüyü yükleyin;

5) Ana sunucu anlık görüntüsü gönderildikten sonra, ara bellekteki yazma komutunu ikincil sunucuya göndermeye başlar;

6) Bağımlı sunucu anlık görüntüyü yüklemeyi bitirir, komut isteklerini almaya başlar ve ana sunucunun arabelleğinden yazma komutunu yürütür.

Artımlı senkronizasyon

Redis artımlı çoğaltma, ikincil sunucudan ikincil sunucuya yazma işlemlerini, ikincil sunucu başlatıldığında ve normal şekilde çalışmaya başladığında eşitleme sürecini ifade eder.

Artımlı çoğaltma işlemi, ana sunucunun bir yazma komutunu her yürüttüğünde ikincil sunucuya aynı yazma komutunu göndermesi ve ikincil sunucunun alınan yazma komutunu alması ve yürütmesidir.

Redis sahnesi

Yaygın NoSQL çözümleri 4 kategoriye ayrılmıştır.

  • K-V depolama: İlişkisel veritabanlarının Redis tarafından temsil edilen veri yapılarını depolayamaması sorununu çözün.
  • Belge veritabanı: MongoDB tarafından temsil edilen ilişkisel veritabanlarında güçlü şema kısıtlamaları sorununu çözün.
  • Sütunlu veritabanı: HBase ile temsil edilen ilişkisel veritabanının büyük veri senaryosunda G / Ç sorununu çözün.
  • Tam metin arama motoru: Elasticsearch tarafından temsil edilen ilişkisel veritabanlarının tam metin arama performansı sorununu çözün.

Önbellek mimarisi tasarımının temel noktaları:

Önbellek penetrasyonu, önbelleğin bir rol oynamadığı anlamına gelir.İş sistemi sorgu verilerini önbelleğe alsa da, önbellekte veri yoktur ve iş sisteminin depolama sistemini yeniden sorgulaması gerekir.

Genellikle iki durum vardır:

  • 1. Saklanan veriler mevcut değil
  • 2. Önbelleğe alınmış veri üretimi çok fazla zaman veya kaynak tüketir

Önbellek çığı, önbellek geçersiz hale geldiğinde (süresi dolduğunda) sistem performansında keskin bir düşüşe neden olan bir durumu ifade eder.

Etkin noktaları önbelleğe almanın çözümü, birden çok önbellek kopyasını kopyalamak ve önbellek etkin noktalarının neden olduğu tek bir önbellek sunucusu üzerindeki baskıyı azaltmak için istekleri birden çok önbellek sunucusuna dağıtmaktır.

Okuma-yazma ayrımı + çok seviyeli önbelleğe alma stratejisi

Ev yönlendirme yükleme

Orijinal adres: https://www.imooc.com/article/268487

Yazar: java dev salyangoz, ihlal varsa, lütfen silin, teşekkür ederim

Sağlığınızı test etmek için sadece tükürüğe ihtiyacınız var. Netizenler şunları söyledi: Bu teknolojiler çok güçlü
önceki
On yılda cep telefonlarında ne gibi değişiklikler oldu? Bir anılar dalgası neredeyse ağladı
Sonraki
2019 teknolojisi ileriye dönük kulaklıklar: izlemeniz gereken bu altı etkin nokta
Netizenler, çalışma grubunun sahip olması gereken birkaç uygulamayı şiddetle tavsiye eder.
Çin Yeni Yılı için en iyi 5 Kırmızı Mal, her iki ebeveyn de seviyor
Cebinizdeki tarayıcı belgeleri istediğiniz zaman, istediğiniz yerde dijital hale getirir. Netizenler evet diyor
Bu Bahar Festivaline bir şey eklensin mi? İyi bir ses, evi daha sıcak yapar
Bu yaşta sahip olmanız gereken birkaç uygulama, netizenler şunları söyledi: çok gerçek!
Verinin gerçek ölçümünden bahsedelim 16G belleğin gelişimi ne kadar büyük?
Programcı Ali p7 röportajından şikayet etti ve Microsoft tarafından reddedildi. Netizen: Sen daha ileri düzey bir programcısın
Xiaomi akıllı klozet kapağı ve klima doğuyor! İtalyan medyası tarafından geniş ölçüde endişeleniyor
Zhian: Gizemi okuyorum
Askeri Oyunların ana mekanı olan Dongxihu Spor Merkezi, klima inşaat aşamasına girdi
Netizenler şunları söyledi: Huawei'ye veda edin, bu telefonlar artık satın almak istemiyor
To Top