Memcached yerine Memcache'i ne zaman kullanmalıyım?


321

PHP'nin memcache ve memcached adında iki memcached kütüphanesi olduğu anlaşılıyor . Fark nedir ve hangisini kullanacağınızı nereden biliyorsunuz? Biri modası geçmiş mi? Görünüşe göre memcached daha fazla yöntem sunuyor, bu yüzden en fazla gelişme olduğu anlamına geliyordu - ama aynı zamanda harici C / C ++ kitaplıkları gerektiriyor gibi yükleyebilir miyim emin değilim.

Memcache'nin daha uzun olduğu, ek kütüphaneler gerektirmediği ve hatta pencereler için önceden derlenmiş ikili dosyalara sahip olduğu görülüyor ! Şimdilik daha iyi bir seçim olacağını düşünürdüm. Ancak, memcached (sunucu) için yeni olmak Memcached (php) ekstra sorun değer yapmak bazı süper önemli özellikleri olup olmadığından emin değilim.


1
ZendCon ikisini karşılaştıran güzel bir bölüm var. ZendCon Sessions 040: Memcached: daha iyi Memcache arayüzü
John Magnolia

sadece birkaç gün içinde serverfault.com/questions/63383/memcache-vs-memcached kopyası , ancak bu daha fazla görüntüleme ve oy aldı :)
Stefano

Yanıtlar:


249

Memcached istemci kütüphanesi kısa süre önce kararlı olarak piyasaya sürüldü. Digg tarafından kullanılıyor (artık digg ile Andrei Zmievski tarafından digg için geliştirildi) ve eski memcache istemcisinden daha çok memcached protokolünü uygular . Memcached'in sahip olduğu en önemli özellikler:

  1. Cas jetonları . Bu hayatımı çok daha kolay hale getirdi ve eski veriler için kolay bir önleme sistemidir. Önbellekten bir şey çektiğinizde, bununla birlikte bir cas jetonu (çift sayı) alabilirsiniz. Güncellemek istediğiniz nesneyi kaydetmek için bu belirteci kullanabilirsiniz. İş parçacığınız çalışırken hiç kimse değeri güncellemediyse, takas başarılı olur. Aksi takdirde daha yeni bir cas jetonu oluşturulur ve verileri yeniden yüklemeye ve yeni jetonla tekrar kaydetmeye zorlanırsınız.
  2. Dilimlenmiş ekmek beri geri aramalar okumak en iyi şeydir. Kodumun çoğunu basitleştirdi.
  3. getDelayed () , betiğinizin sonuçların sunucudan geri gelmesini beklemesi gereken süreyi azaltabilen güzel bir özelliktir.
  4. Memcached sunucusunun çok kararlı olması beklenirken, en hızlı sunucu değil. Yeni istemcide ASCII yerine ikili protokol kullanabilirsiniz.
  5. Karmaşık verileri memcached'a her kaydettiğinizde, değerin seri hale getirilmesi için kullanılan istemci (yavaş olan), ancak şimdi memcached istemcisi ile igbinary kullanma seçeneğiniz vardır . Şimdiye kadar bunun ne kadar performans kazancı olabileceğini test etme şansım olmadı.

Tüm bu noktalar benim için en yeni müşteriye geçmem için yeterliydi ve bunun bir cazibe gibi çalıştığını söyleyebilirim. Libmemcached kütüphanesine harici bir bağımlılık var, ancak yine de Ubuntu ve Mac OSX'e yüklemeyi başardılar, bu yüzden şimdiye kadar sorun yok.

Daha yeni kitaplığa güncelleme yapmaya karar verirseniz, en son sunucu sürümüne güncellemenizi ve bazı güzel özelliklere sahip olmasını öneririm. Derlemek için libevent yüklemeniz gerekecek , ancak Ubuntu'da çok fazla sorun değildi.

(Ben bunları takip olmadığı halde) Herhangi çerçeveler bugüne kadar yeni memcached müşteri pick up görmedim ama sanırım Zend kısaca gemide alacak.

GÜNCELLEME

Zend Framework 2, Memcached için burada bulunan bir adaptöre sahiptir


1
Mükemmel cevap; ayrıca, libmemcached'a dış bağımlılık aslında bu durumda, daha aktif olarak geliştirilen istemcilerden biri olduğu için bir artıdır.
Marc Bollinger

Kabul. Libmemcached harici bağımlılık, libevent ile aynı şekilde bir sorun olarak görülmemelidir.
Miha Hribar

1
Cas Tokens olayı en büyük artıya benziyor. Aslında, bu özelliklere bakmak neredeyse memcached gibi bir DB gibi yönetilen bir veri sahibi, ve daha az bir geçici önbellek gibi gidiyor gibi görünüyor.
Xeoncross

Bunu arıyorsanız, memcachedb ( memcachedb.org ) zaten var , aslında sadece memcached protokolünü konuşan bir Berkley DB.
Miha Hribar

8
bu cevap bile memcache ve memcached arasındaki farkı anlatmıyor mu?! memcache memcached'in sadece eski sürümü mü?
Daniel W.Haziran


8

Bu 2013. 2009 yorumlarını unutun. Aynı şekilde, ciddi trafik yükleri çalıştırıyorsanız, windows tabanlı bir memcache ile nasıl yapılacağını düşünmeyin. Çok büyük ölçekli (500+ ön uç web sunucuları) ve 20+ arka uç veritabanı sunucuları ve çoğaltıcıları (mysql & mssql mix) ile uğraşırken, memcached sunucular grubu (gruptaki 12 sunucu) 25K yanıtlayan çoklu yüksek hacimli OLTP uygulamalarını destekler ~ 40K mc-> saniyede çağrı alır. Bu çağrılar bir veritabanına ulaşmak zorunda DEĞİLDİR .

IMHO, memcached bu kullanımı SERIOUS $$$, $$$ yeni DB sunucuları ve lisansları için CAPEX tasarruf yanı sıra büyük ticari tasarımlar için destek sözleşmeleri sağladı.


48
Bu php memcache protokolü bu 2 uygulamaları arasındaki farklar hakkında soruya nasıl cevap?
Marki555

9
Bu bir yorum olmalı.
Elijah Lynn

7

Memcached daha yeni bir API, aynı zamanda bir sunucu sağlayıcısı varsa harika olabilecek bir oturum sağlayıcı olarak memcached sağlar.

Sürüm hala düşük 0.2 sonra ama her ikisini de kullandım ve büyük bir sorunla karşılaşmadım, bu yüzden yeni olduğundan memcached gitmek istiyorum.


1
Bunları asla kullanmak istemememe rağmen ikisi de oturum işleyicisi olarak çalışıyor. us3.php.net/manual/tr/memcache.examples-overview.php
Xeoncross

iyi benim kötü yakalamak, evet gerçekten önemli hale geldiğinde büyük sunucuda gerçekten yararlıdır, artı memcache bir şeyleri ölçeklemek için bilmek çok zor bellek almak için bazı nesne düşmeyeceğini doğrulamaz.
RageZ

1
0.2 sürümü o zamandan beri kararlı bir 1.0.0 sürümü tarafından aşıldı.
Miha Hribar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.