SORU
12 Mayıs 2014, PAZARTESİ


Eğer redis zaten yığının bir parçası ise, neden hala yanında kullanılan Redis Memcached?

Redis sağlar (sürüm 3 öğe son kullanma, ve şimdi kümeleme LRU önbellek.Memcached herşeyi yapabilir x , şu anda beta) veya twemproxy gibi araçlar tarafından. Performansı çok benzer. Ayrıca, Redis için bir sunucu durumunda önbellek ısınma yeniden yapmana gerek yok kalıcılık nedeniyle ekler.

Memcache yedek olarak Redis (zaten varsa yığın) iyilik bazı Redis ve Memcache, karşılaştırın olan bazı eski cevaplar için referans:

Rağmen bu, üzerinde çalışılması yığınlarının büyük bir web ölçekli şirketler gibi İnstagram, Pinterest, Twitter vb, bulduğum kullanıyorlar hem Memcached Redis ve değişik amaçlar için değil, Redis kullanarak için birincil önbelleğe alma. Birincil önbellek hala Memcached, Redis veri yapıları mantıksal tabanlı önbelleğe alma için kullanılır.

Memcached gelen her şeyi yapacak olan zaten bir Redis zaman yığını, bileşen ek bileşen olarak eklenecek acıya değer memcached hala neden 2014 yılı itibariyle? Mimarlar/mühendisler hala ayrı zaten varolan gelen Redis memcached vardır yanaş bu olumlu yönleri nelerdir?

CEVAP
14 Mayıs 2014, ÇARŞAMBA


Use-case için memcached Redis olarak bugün gördüğüm ana nedeni ile almak gerekir üstün bellek verimliliğidüzHTML parçaları önbelleğe (ya da benzeri uygulamalar). Eğer farklı memcached anahtarları nesneleri farklı alanları saklamak gerekiyorsa, o zaman Redis sağlamalarının daha hızlı olacak, ama önemli sayıda ->çift simple_string, memcached sen megabayt başına daha fazla ürün vermek gerekir.

İyi olan başka şeyler memcached: ilgili puan

  • Eğer sadece işlevselliği gerekiyorsa sağlayan kod çok basit bir parça, sanırım makul bir alternatif olduğunu, ama asla üretiminde kullanılır.
  • Çok iş parçacıklı, eğer tek bir kutu kurulumu ölçek gerekiyorsa, iyi bir şeydir ve sadece tek bir örneği ile konuşmak gerekir.

Bir önbellek olarak Redis Redis veri yapıları üzerinden önbelleğe alınan veri yapısını korumak için çalıştıklarında, insanlar akıllı önbelleğe alma yolunda ilerlerken ya da daha fazla ve daha mantıklı olduğuna inanıyorum.

Redis memcached LRU ve LRU arasında karşılaştırma.

Hem memcached Redis ve gerçek LRU yapmazlar tahliyeler, ama bu sadece bir yaklaşım.

Memcache tahliye başına boy sınıf ve slab onun ayırıcı uygulama ayrıntıları bağlıdır. Örneğin, eğer eklemek istediğiniz bir madde uyuyor belirli bir boyutu, sınıf, memcached çalışacağız kaldırmak süresi dolmuş / -son kullanılan öğeler bu sınıf, yerine deneyin bir küresel girişimi anlamak ne nesne, ne olursa olsun onun büyüklüğü, en iyi aday.

Redis yerine çalışır almak için iyi bir nesne olarak bir aday için tahliye olduğunda maxmemory sınırına ulaşıldığında, bakıyorum tüm nesneler, boyutu ne olursa olsun, sınıf, ama sadece mümkün sağlamak için yaklaşık olarak iyi bir nesne değilen iyi nesnedaha fazla boş zaman.

Yol Redis birkaç nesne örnekleyerek bu, boşta (erişilmez) uzun zamandır olan bir toplama yapar. Beri Redis 3.0 (şu anda beta) algoritması geliştirilmiş ve aynı zamanda iyi bir aday tahliyeler karşısında havuzları alır, bu yaklaşım geliştirildi. Redis documentation you can find a description and graphs with details about how it works.

Neden memcached daha iyi bir hafıza, basit bir dize için Redis ->daha ayak izi var dize haritalar.

Redis bir parça daha karmaşık yazılım, bu yüzden değerleri Redis saklanır bir şekilde daha fazla benzer nesneleri bir yüksek seviyeli programlama dili: onlar ilişkili bir tür kodlama referans sayımı için bellek yönetimi. Bu Redis iç yapısı iyi ve yönetilebilir hale getirir, ama sadece dizeleri ile ilgilenen bir havai memcached ile karşılaştırıldığında.

Redis daha hızlı olmaya başlar

Redis özel bir bellek yolu kurtaran küçük toplam veri türlerini depolamak için yapabiliyor. Örneğin küçük Redis Karma bir nesne, temsil eden dahili ikili eşsiz bir leke gibi karma bir tablo değil, ama saklanır. Yani, bir karma nesne başına birden fazla alanı ayarı memcached içine depolamak N ayrı dört tuş daha etkilidir.

Aslında, tek bir JSON (veya ikili kodlanmış) olarak memcached içine bir nesne blob saklayabilirsiniz, ama Redis aksine, bu sana ya da bağımsız alanları getirme güncellemek için izin vermez.

Akıllı önbelleğe alma bağlamında Redis avantajı.

Redis veri yapıları nedeniyle, DB den sonra yeniden normal desen önbelleğinde geçersiz nesneleri yok etme ile memcached, Redis kullanarak ilkel bir yöntemdir.

Örneğin, "Yeni" bölümünde site. doldurmak için son N haber, Hacker Haberleri yazan önbellek gerek hayal Redis ile ne listesi (M öğeleri de şapkalı) en yeni haberler eklenmiş. Verileriniz için başka bir mağazaya kullanın ve bir önbellek olarak Redis, ne doldurmak içinher ikisi deyeni bir madde deftere ne zaman manzaraları (Redis ve DB). Önbellek geçersiz kılma diye bir şey yok.

Ancak bu uygulama her zaman eğer Redis listesi boş, bir başlangıçtan sonra örneğin bulunursa, ilk görünümünü yeniden DB olabilir ki mantığı var.

Daha verimli bir şekilde memcached göre Redis ile önbelleğe alma gerçekleştirmek mümkündür, ama akıllı önbelleğe alma kullanarak tüm sorunları bu model için uygundur. Örneğin HTML parçaları önbellekleme bu teknolojiden yararlanamaz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KIT KAT

    KIT KAT

    3 EKİM 2005
  • LearnCode.academy

    LearnCode.ac

    20 Aralık 2012
  • Crossover

    Crossover

    18 HAZİRAN 2007