Memcache ve Redis (2)

1. Memcache nedir? 2. Memcache'nin özellikleri nelerdir? 3. Memcache'nin bellek yönetimi mekanizması nedir? 4. Memcache ile Memcached arasındaki fark nedir? 5. Memcache nasıl çalıştırılır? 6. Memcache oturum paylaşımı için nasıl kullanılır? 7. Redis nedir? 8. Redis nasıl kullanılır? 9. Redis kullanılırken hangi sorunlara dikkat edilmelidir? 10. Yeni: Redis ve Memcache arasındaki fark nedir? 11. Yeni: Redis kalıcılığı nasıl sağlıyor? On iki, Memcache ve Redis'in mülakat soruları sık sık

Bu bölümün içeriği, tüm blok içeriğini açıklamak için üç makaleye bölünecektir: İlk makale esas olarak bir ila altıyı açıklayacak ve ikincisi, temel olarak yedi ila onbiri açıklayacaktır. (Yeni on ve on bir) Üçüncü bölüm on ikinci nokta civarındadır.

Aşağıdaki metnin bir kısmı kaynak "PHP Programcı Röportajı Yazılı Test Kitabı" Kitaplar, yeniden basıldıysa lütfen kaynağı saklayın:

7. Redis nedir?

Redis, bir anahtar-değer depolama sistemidir. Memcached'e benzer şekilde, dize (dize), liste (bağlantılı liste), küme (koleksiyon), zset (sıralı küme, sıralı küme) ve karma (karma türü) dahil olmak üzere depolama için nispeten daha fazla değer türünü destekler. Bu veri türlerinin tümü push / pop, add / remove, intersection, union ve fark ve daha zengin işlemleri destekler ve bu işlemlerin tümü atomiktir. Bu temelde Redis, çeşitli farklı türleri destekler. Memcached gibi, verimliliği sağlamak için veriler bellekte önbelleğe alınır. Aradaki fark, Redis'in düzenli olarak güncellenmiş verileri diske yazması veya değişiklik işlemlerini ek kayıt dosyalarına yazması ve bu temelde ana-bağımlı (ana-bağımlı) senkronizasyonunu gerçekleştirmesidir.

Redis'in ortaya çıkışı, büyük ölçüde Memcached gibi anahtar / değer depolamasının yetersizliğini telafi etti ve bazı durumlarda ilişkisel veritabanlarının tamamlanmasında çok iyi bir rol oynayabilir. Java, C / C ++, C #, PHP, JavaScript, Perl, Object-C, Python, Ruby, Erlang, vb. Gibi kullanımı çok uygun istemciler sağlar.

Redis, master-slave senkronizasyonunu destekler. Veriler ana sunucudan herhangi bir sayıda ikincil sunucuya senkronize edilebilir ve ikincil sunucu, diğer bağımlı sunucularla ilişkili ana sunucu olabilir. Bu, Redis'in tek seviyeli ağaç çoğaltması gerçekleştirmesine olanak tanır. Diske kaydet, kasıtlı veya kasıtsız olarak veri yazabilir. Yayınlama / abone olma mekanizması tam olarak uygulandığından, bağımlı veritabanı ağacı herhangi bir yerde senkronize ederken, bir kanala abone olabilir ve ana sunucunun eksiksiz mesaj yayınlama kaydını alabilir. Senkronizasyon, okuma işlemlerinin ölçeklenebilirliği ve veri yedekliliği için çok yararlıdır.

8. Redis nasıl kullanılır?

Set yöntemini kullanma örneği:

< ? php $ Redis = yeni Redis (); $ Redis- > bağlan ('127.0.0.1', 6378); $ res = $ Redis- > set (aaa, "bbbb"); var_dump ($ res); // Sonuç: bool (doğru) ? >

Aşağıdakiler her bir kullanım yönteminin yalnızca bir özetidir, özel kullanım yöntemi örneğe ve kullanım için PHP yazımına başvurabilir:

1. Dize türü nasıl kullanılır

2. Hash türü nasıl kullanılır

3. Liste türü nasıl kullanılır

4. Set türü nasıl kullanılır

5. Sıralı küme türü nasıl kullanılır

9. Redis kullanılırken hangi sorunlara dikkat edilmelidir?

MySQL gibi, Redis de kullanımı sırasında birçok sorunla karşılaşacaktır.Uygun beceriler ve optimizasyon, Redis'in performansını büyük ölçüde artıracak ve hizmet kalitesini artıracaktır. Bazı yaygın sorunlar şu şekilde özetlenmiştir:

1. Tuşları kullanmayı bırak * işlemi

Tuş * işlemlerinin yürütme hızı yavaşlayacaktır. Anahtarlar komutunun zaman karmaşıklığı O (n) olduğundan, burada n döndürülecek anahtar sayısıdır, bu komutun karmaşıklığının veri miktarına bağlı olduğu görülebilir. Veri miktarı nispeten büyük olduğunda, bu işlemin yürütülmesi sırasında, örnekte performansı ciddi şekilde etkileyen başka hiçbir komut çalıştırılamaz. Bunun yerine tarama komutunu kullanabilirsiniz.Tarama komutu veritabanını artımlı yinelemeyle tarar.

2. Redis'teki yavaşlamanın nedenini bulun

Komutun kaç kez çalıştırıldığı ve komutu çalıştırmak için geçen milisaniye sayısı gibi tüm komutların istatistiklerini görüntülemek için INFO commandstats komutunu kullanın.

3. Karma depolamayı kullanmayı deneyin

Karma depolama yöntemi, işlem verimliliğini büyük ölçüde artıracaktır.

4. Anahtar değerin hayatta kalma süresini ayarlayın

Mümkün olduğunda, anahtar zaman aşımlarından mümkün olduğunca yararlanın. İyi bir örnek, geçici kimlik doğrulama anahtarları gibi şeyleri saklamaktır. Bir yetkilendirme anahtarı aradığınızda, örnek olarak OAUTH alın - genellikle bir zaman aşımı süresi alırsınız. Bu şekilde, anahtarı ayarlarken aynı zaman aşımı süresini ayarlayın ve Redis sizin için otomatik olarak temizleyecektir! Artık tüm tuşlarda gezinmek için KEYS * kullanmaya gerek yoktur.

5. Çok önemli veriler için lütfen istisna işleme mekanizmasını kullanın

Redis örneğine kritik verilerin konulabileceğinden emin olmanız gerekiyorsa, istisna işleme mekanizmasını kullanın. Neredeyse tüm Redis istemcileri "gönder ve unut" stratejisini benimser, bu nedenle bir anahtarın gerçekten Redis veritabanına yerleştirilip yerleştirilmediğini düşünmek gerekir. İstisna işleme mekanizması eklemek, programın sağlamlığı için bir ön koşuldur.

6. Çok örnekli uygulama

Mümkün olduğunda, birden çok Redis örneğinin iş yükünü mümkün olduğunca dağıtın. Redis kümesi, ana / bağımlı modu içeren bazı anahtarların anahtar aralığına göre ayrılmasına izin verir. Çoklu örnek, küme kaynaklarının maksimum kullanımını ve küme kararlılığını sağlamak için önemli bir garantidir.

Kendi kendime bir makale derledim " Redis kümelemeyi nasıl uygular? "Makale, resmi hesabı takip edin:" Şanslı Programlama Kitaplığı ", Yanıtla:" Redis ",Sana gönderdim.

10. Redis ve Memcache arasındaki fark nedir?

(1) Veri yapısı: Memcache yalnızca anahtar değeri depolamayı destekler; Redis, anahtar değeri, karma, liste, küme, zset gibi daha fazla veri türünü destekler; (2) Çoklu okuma: Memcache çoklu iş parçacığını destekler, Redis tek iş parçacığını destekler; Memcache, CPU kullanımı açısından Redis'ten üstündür; (3) Kalıcılık: Memcache kalıcılığı desteklemez, Redis kalıcılığı destekler; (4) Bellek kullanımı: Memcache yüksektir, Redis düşüktür (sıkıştırma kullanıldığında Memcache'den daha yüksektir); (5) ) Süre sonu stratejisi: Memcache'nin süresi dolduktan sonra, önbellek silinmez, bu da bir dahaki sefere veri getirme sorununa neden olur Redis, önbelleğe alınmış verileri temizlemek için özel bir iş parçacığına sahiptir;

11. Redis kalıcılığı nasıl elde ediyor?

Redis, veri kalıcılığını destekleyen bir bellek içi veritabanıdır. Redis, verilerin kalıcılığını sağlamak için Redis'in güncellenmiş verileri düzenli olarak diskle senkronize etmesine izin verecek şekilde ayarlanabilir. Redis tarafından desteklenen iki kalıcılık stratejisi vardır: RDB ve AOF.

1. RDB kalıcılığı

RDB kalıcılığı şu anlama gelir: veri anlık görüntülerini belirli bir zaman aralığında kaydetme. Redis'in varsayılan kalıcılık yöntemi RDB'dir.

RDB'nin çalışma prensibi, Redis'in kalıcı olması gerektiğinde, Redis'in bir alt süreci çatallaması ve alt işlemin verileri diskteki geçici bir RDB dosyasına yazmasıdır. Alt süreç geçici dosyayı yazmayı bitirdiğinde, orijinal RDB'nin yerini alır ve bu da yazma üzerine kopyalama yapabilme avantajına sahiptir.

Redis.conf dosyasında RDB kalıcılığı için varsayılan ayarlar şunlardır:

300'ü kaydedin 10 # 300 saniye içinde, 10'dan fazla anahtar değiştirilirse, bir anlık görüntü kaydetme başlatılacaktır;

RDB'nin Avantajları:

RDB'nin kalıcılık yöntemi belirli bir zaman aralığı içinde veri anlık görüntülerini alabildiğinden, RDB olağanüstü durum kurtarma için çok uygundur. Örneğin, verilerin izlenebilirliğini ve farklı sürümlere geri yüklenmesini kolaylaştırmak için her saatte bir yedekleme veya her gün toplam yedekleme ayarlayın.

RDB'nin dezavantajları:

(1) Kalıcılık, belirli bir zamanda yalnızca bir kez gerçekleştirilir, bu nedenle verileri kaybetmek kolaydır; örneğin, verileri her 30 dakikada bir yedeklemeye ayarladınız, ancak Redis sunucusu başarısız olursa, yedeklemeden birkaç dakikalık verileri kaybedebilirsiniz. (2) Veriler çok büyük olduğunda, kaydederken performans sorunları ortaya çıkabilir.

2. AOF kalıcılığı

AOF: Önce komutu işlem günlüğünün sonuna ekleyin ve tüm geçmiş işlemleri kaydedin.

AOF'nin çalışma prensibi, her yazma komutunun yazma işlevi aracılığıyla appendonly.aof'a eklenmesidir.Redis başarısız olduğunda ve yeniden başladığında, Redis kapatılmadan önce durumu geri yüklemek için AOF dosyasını "tekrar" için okuyacaktır.

AOF kalıcılığı için Redis.conf ayarları:

Redis.conf ek olarak evet # Tam kalıcılığı etkinleştir appendfsync her zaman veri değişikliği olduğunda #AOF dosyası yazılacaktır. appendfsync everysec #Sync saniyede bir, bu strateji AOF'nin varsayılan stratejisidir.

AOF'nin Avantajları:

(1) Veriler çok eksiksizdir ve arıza kurtarma sırasında daha az veri kaybı olur; (2) Geçmiş işlemler işlenebilir.

AOF'nin dezavantajları:

(1) Aynı veri setini yedeklerken, AOF'nin dosya boyutu RDB'ninkinden daha büyüktür; (2) AOF, fsync stratejisini kullanıyorsa, AOF'nin hızı RDB'den daha yavaş olabilir.

3. Kalıcılık stratejisi için hangi Redis daha iyidir?

Redis hem RDB hem de AOF kalıcılık stratejilerini desteklediğinden, her ikisi de veri yedekleme güvenlik değerlendirmeleri için ayarlanabilir.Redis yeniden başlatıldığında, AOF, veri kaybının en aza indirilmesini sağlamak için önce verileri geri yüklemek için kullanılacaktır.

İkisinden birini seçmek isterseniz işletmenize göre seçim yapabilirsiniz:

(1) Veri kaybı gereksinimleri yüksekse, AOF kalıcılık stratejisini seçebilirsiniz; (2) AOF tarafından Redis üzerinde yürütülen her komut diske eklenecek ve bu da Redis'in performansını düşürecektir. Redis'in performansı dikkate alınırsa , RDB kalıcılık stratejisini seçebilirsiniz; (3) Veri felaket kurtarma durumunu göz önünde bulundurarak RDB kalıcılık stratejisini seçebilirsiniz.

Yeniden yazdırma adresi: https://mp.weixin.qq.com/s/xzk3YPCIdhpB4oO_3HAeYg

"Ev Aletleri Oscar'ları" Büyük Bir Şekilde Açıklandı, Samsung QLED 8K TV Apple Altın Ödülünü Kazandı
önceki
Süper takım ortağı! Son derece dokulu Air Jordan 6 Uçuş Ceketi yakında geliyor!
Sonraki
Fragmanın "They" versiyonu ortaya çıktı. Beş kadın yönetmen "Half the Sky" a odaklanıyor
Yeniden çalışmadan sonra, genel saldırı hasarı bir atıcınınki ile karşılaştırılabilir, netizenler: Kralın ihtişamının ilk kadın büyücüsü mü?
Mühendislikte doktora ve yüksek lisans derecelerinin yetiştirilmesi için "yeni düzenlemeler" burada! 2018 yürütmeye başlama
2019 Çin Emlak Güzel Dekorasyon Zirvesi Forumu Modern Mutfakların Yeniden Tanımlanması
Memcache ve Redis (1)
"En İyilerimiz" özel "Bir Kitap ve On Yılımız" August Chang'an'ı ifşa ediyor: En iyilerimiz devam ediyor
Normal versiyonla karşılaştırıldığında, LaCrosse'un hibrit versiyonu arasındaki fark nedir?
Bir set 500 yuan'dan fazla değil, çok fazla ucuz ve kullanımı kolay güzellik ürünü var!
Bilgi bağlantılarını ve kullanıcı ilişkilerini yeniden yapılandırmak için bugünün ana ev aletleri sektörü raporu yayınlandı
Meyve ve tavuk yetiştiren eski fakir hanelerin artık kendi küçük işletmeleri var.
"Kowloon Yenilmez" seri cinayet karmaşık ve kafa karıştırıcı Zhang Jin, katili cezalandırmak için "nevrotik" dedektife meydan okuyor
Jaguar'ın yeni XE'sinin, yeni bir 2.0T motor kurmak için önümüzdeki ay mağazaya gelmesi bekleniyor
To Top