Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 10734|Yanıt: 0

[Redis] Örnekler, Redis önbellek penetrasyonu, önbellek çığı ve önbellek dağılımının ne olduğunu açıklar

[Bağlantıyı kopyala]
Yayınlandı 19.11.2019 09:55:04 | | | |
Redis önbelleğinin kullanımı, özellikle veri sorgulamasında uygulamaların performansını ve verimliliğini büyük ölçüde artırır. Ama aynı zamanda bazı sorunlar da getiriyor. Bunlar arasında en önemli sorun, kesinlikle çözülemeyen veri tutarlılığıdır. Veri tutarlılığı gerekiyorsa, önbellek kullanmak mümkün değil.

Diğer tipik sorunlar ise önbellek penetrasyonu, önbellek çığı ve önbellek bozgunudur. Şu anda sektörde daha popüler çözümler de bulunmaktadır. Bu makale, bu üç sorunu daha mükemmel çözmek için değil, sektördeki popüler çözümleri altüst etmek için de değil. Bunun yerine, bu üç problem olgusunu gerçek kod işleminden göstereceğiz. Bunu yapmanın nedeni, bu problemlerin akademik açıklamasına bakarak kafada çok canlı bir kavram oluşturmanın zor olmasıdır ve gerçek kod gösterimleriyle bu problemleri daha derinleştirebilirsiniz.

Önbellek nüfuzu

Önbelleğe girme, veritabanında olmayan verilerin sorgulanmasını ifade eder. Anahtar mevcut yoksa veya anahtarın süresi dolduğunda, veritabanı sorgulanır ve sorgulanan nesneler önbelleğe alınır. Veritabanı sorgu nesnesi boşsa, önbelleğe alınmaz.



Kod akışı

  • parametre geçerken nesnenin birincil anahtar kimliğini
  • Anahtara göre nesneyi önbellekten alın
  • Nesne boş değilse, doğrudan geri döner
  • Nesne boşsa, veritabanı sorgusu yapın
  • Veritabanından sorgulanan nesne boş değilse, önbelleğe alın (son kullanma süresini ayarlayın). Böyle bir durumu düşünün, eğer verilen parametre -1 olursa ne olurdu? Bu -1, var olmaması gereken bir nesnedir. Veritabanı her seferinde sorgulanır, her sorgu boş olur ve her zaman önbelleklenmez. Kötü niyetli bir saldırı olursa, bu güvenlik açıklığı veritabanına baskı yapmak veya hatta onu bunaltmak için istismar edilebilir. UUID kullanılsa bile, var olmayan bir ANAHTAR bulup saldırmak kolaydır.


Çalışmamda, null değerleri önbellekleme yöntemini kullanacağım, yani [kod sürecinde] 5. adım; veritabanından sorgulanan nesne boşsa, o da önbelleğe alınır, ancak önbellek süresi kısa olur, örneğin 60 saniyeye ayarla.




Depo çığı

Cache çığı, önbellek setinin belirli bir zaman diliminde süresi dolmasını ifade eder.

Örneğin, bu makaleyi yazarken çığ olayının nedenlerinden biri, yakında on ikinci gün saat sıfırda olacak ve yakında bir acele alışveriş dalgası başlayacak. Sonra sabah saat birde, bu ürün partisinin deposu sona erecek. Bu ürün partisi için erişim sorgusu veritabanına düşer ve veritabanı için periyodik basınç zirveleri olur.

Xiaobian e-ticaret projeleri yaptığında genellikle farklı ürün kategorilerini benimser ve farklı döngüleri önbelleer. Aynı kategorideki mallar ve rastgele bir faktör. Bu şekilde, önbellek son kullanma süresi mümkün olduğunca dağıtılabilir, popüler kategorilerdeki ürünlerin önbellek süresi daha uzun olur ve popüler olmayan kategorilerdeki ürünlerin önbellek süresi daha kısa olur; bu da önbellek servisinin kaynaklarını da tasarruf edebilir.




Aslında, merkezi son kullanma çok ölümcül değildir ve önbellek çığının daha ölümcül olması, önbellek sunucusunun bir düğümünün çökmesi veya bağlantısının kesilmesidir. Doğal olarak meydana gelen önbellek çığının belirli bir zaman diliminde oluşturulması gerektiği için, veritabanı basınca dayanabilir ve bu dönemde veritabanı da basınca dayanabilir. Bu, veritabanı üzerinde periyodik baskıdan başka bir şey değil. Önbellek servis düğümünün durma süresi, veritabanı sunucusu üzerinde öngörülemez bir baskı yaratır ve veritabanını anında bunaltma olasılığı yüksektir.

Önbellek dağılımı

Önbellek bozumu, çok sıcak olan, sürekli büyük eşzamanlılık taşıyan bir anahtarı ifade eder; büyük eşzamanlılık bu noktaya erişmeye odaklanır; bu anahtar başarısız olduğunda, sürekli büyük eşzamanlılık önbelleği kırar ve doğrudan veritabanını talep eder; tıpkı bir bariyerde delik açmak gibi.

Xiaobian e-ticaret projeleri yaparken bu ürünü "hit" yaptı.

Aslında, çoğu durumda, bu tür patlamaların veritabanı sunucusuna ezici baskı kurması zordur. Bu seviyeye ulaşmış çok az şirket vardır. Bu nedenle, pragmatik editör ana ürünlere erken hazırlanmış ki önbellek asla süresi dolmaz. Bazı ürünler kendiliğinden ürün haline gelse bile, asla süresi dolmayacak olarak ayarlanabilir.

Ana yol basit ve mutex anahtarlı karşılıklı reddetme kilidi pek kullanılmıyor.





Önceki:MySql 8.0 Ya güvenli bir bağlantı kullanın, ya sunucunun RSA'sını belirtin...
Önümüzdeki:Docker konteyneri harici ana hizmetlere erişmek için
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com