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'nin Avantajları:
RDB'nin dezavantajları:
Redis'in veri kümesini diske dökmesi gerektiğinde, aşağıdakiler gerçekleşir:
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ı:
Redis'in diskteki verileri senkronize etme sayısı. Üç seçenek vardır:
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 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.
Ö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:
Ö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