web-gelistirme-sc.com

memcache vs memcached?

Memcached kullanmak istiyorum

http://www.danga.com/memcached/

yum install memcached

Ama şimdi PHP'ye bağlanmam gerekiyor ve memcache adında bir uzantı ve memcached adında bir uzantı var mı? ARGH

http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php

Birisi beni burada doğru yönde gösterebilir mi .. hangisi işe yarayacak?

Ayrıca, yerel olsa bile çalışması için herhangi bir bağlantı noktası açmam gerekir mi? Çalıştırdıktan sonra telnet 127.0.0.1 11211'i deniyorum ve bağlantı reddedildi.

76
thanksyo

Kısa cevap: Ya aradığınız şey budur, ancak ilk tercihim, isimlendirmenin doğru kullanımına bağlı olarak memcache (ilk listelediğiniz), tamamen olacaktır.

İşte bu sonuca şu şekilde geldim:

İşte adlandırma konvansiyonlarında (tanıdık olmayanlar için), askerin sorusunun hayal kırıklığını açıklayan hızlı bir arka plan: Birçok * nix uygulaması için, arka uç işini yapan parçaya "daemon" (Windows'ta "hizmet" deyin) land), arayüz veya istemci uygulaması daemon'u kontrol etmek veya erişmek için kullandığınız şeydir. Daemon, çoğunlukla "d" harfi eklenmiş olarak istemci ile aynı şekilde adlandırılır. Örneğin, "imap", "imapd" arka plan programına bağlanan bir istemci olabilir.

Memcache modülüne giriş okuduğunuzda, bu adlandırma kuralına memcache ile açıkça uyulmaktadır (bu alıntıda memcache ile memcached arasındaki ayrım dikkat edin):

Memcache modülü, özellikle dinamik web uygulamalarındaki veritabanı yükünü azaltmak için tasarlanmış, memcached, yüksek etkili önbellek arka plan programı için kullanışlı prosedürel ve nesne yönelimli arayüz sağlar.

Memcache modülü ayrıca bir oturum işleyici (memcache) sağlar.

Memcached hakkında daha fazla bilgiyi " http://www.danga.com/memcached/ adresinde bulabilirsiniz.

Buradaki hayal kırıklığına, memcached adlı kötü adla PHP uzantısının yazarı neden olur, çünkü memcached adlı gerçek daemon ile aynı adı paylaşır. Ayrıca, memcached'a (php modülü) giriş, modülün erişmek için modül tarafından kullanılan paylaşılan kitaplık (veya API) olan libmemcached'den bahsettiğine dikkat edin. memcached arka plan programı:

memcached, doğasında genel olan, ancak veritabanı yükünü azaltarak dinamik web uygulamalarını hızlandırmada kullanılmak üzere tasarlanmış, yüksek performanslı, dağıtılmış bir bellek nesnesi önbellekleme sistemidir.

Bu uzantı, memcached sunucularla iletişim kurmak için API sağlamak için libmemcached kütüphanesini kullanır. Ayrıca bir oturum işleyici (memcached) sağlar.

Libmemcached ile ilgili bilgileri " http://tangent.org/552/libmemcached.html adresinde bulabilirsiniz.

Özetle, her ikisi de işlevsel olarak aynıdır, ancak sadece farklı yazarları vardır ve biri diğerinden daha uygun şekilde adlandırılmıştır.

24

Muhtemelen PHP İstemci Karşılaştırma .

Kısa versiyon: Her ikisi de çalışacak ve çoğu durumda her ikisi de gayet iyi olacak.

Diğer sorunla ilgili olarak: Evet, telnet 127.0.0.1 11211 İşlemini yapabilmeniz gerekir. Çok az güvenlik duvarı localhost'un kendisiyle iletişim kurmasını engelleyecektir. Bağlanamıyorsanız, memcached'ı başlatmak için kullanılan komut satırı bağımsız değişkenlerini de gösteren ps auxwww | grep memcached Yaparak memcached'in gerçekten çalıştığını doğrulayın. Bağımsız değişkenlerden biri -p 11211 Veya başka bir bağlantı noktası numarası olmalıdır. Tüm olası argümanların anlamları için man memcached.

57
Nate

Nate'in bağlantısının da belirttiği gibi, her ikisi de basit kullanım için mükemmel çalışır. Ancak memcached, memcached'den en iyi performansı almanızı sağlayan daha fazla özelliği destekler. İkili protokol, istemci ve sunucu arasında gönderilmesi gereken veri miktarını azaltır. Multigetler ve multisets, aynı anda birden fazla öğe almanızı/ayarlamanızı sağlar. Memcache'den daha fazla oomph ihtiyacınız olduğunu düşünüyorsanız, memcached daha iyi bir modüldür. Libmemcached kullanımı kütüphanenin kendisinin PHP versiyonundan) daha iyi optimize edildiğini göstermektedir.

Memcached, 8 ay önce piyasaya sürülen memcache ile karşılaştırıldığında daha yeni bir modüldür. PHP'nin daha eski bir sürümünü hedeflemeniz gerekiyorsa, yalnızca gerçekten memcache kullanabilirsiniz.

28
David Pashley

Daha eski, üşüşmüş olana php-memcache çünkü bu en uygun isim gibi görünüyordu. Digg'teki insanlar tarafından bağımsız olarak geliştirilen daha yeni ve daha iyi versiyonun yerine php-memcached netleştirme çıkarına.

Yalnızca adın doğruluğuna dayanarak birini diğerinden seçmenizi tavsiye eden kişilerin gerçekten teknik tavsiye sunan hiçbir işi yoktur.

21
tylerl

Son zamanlarda php-memcache kullandım, ben php-memcached işaret etmek gerekir.

İşte başımın üstünden birkaç neden var ..

1) getErrorCode () veya eşdeğeri bir yöntem yoktur, bu nedenle get () FALSE değerini döndürürse, memcache IS false değerinde veya bir tür konu.

2) Tutarlı karma için karma algoritması, libmemcached'den oluşturulan birçok istemci kütüphanesi gibi diğer uygulamalardan farklı görünmektedir. Bu, aynı memcache kümesini birden çok dilde kullanmak istiyorsanız, büyük olasılıkla PHP istemcisinde bir değer depolayacağınız ve diğer istemcilerin bulamayacağı) sorunlarınız olacağı anlamına gelir .

6
user25576

Her ikisinin de bugün itibariyle sorunları var. PECL/memcache, eski ve güvenilirdir, tarihli olmadığı birkaç istisna dışında. PECL/memcached 1.x en iyi beta sürümdür. Bazı işlevler sayısal tuşlarla ilgilenmez, kalıcı bağlantılar kullanılırken bağlantılara sızar. Bazıları (tümü?) GitHub'da düzeltiliyor ve 2.x'te bir noktada yayınlanacak, ancak bugün değil. Daha ayrıntılı bir inceleme için bkz. http://brian.moonspot.net/php-memcached-issues

3
Brian Moon

Ben bir kitap üzerinde çalışıyorum "Uzman PHP ve MySQL". Farklılıklar hakkında hemen hemen aynı şeyi yazdım. Ne tavsiye PECL/memcached oldu. # 1 - tam bir sarar özellikli iyi performans gösteren C kütüphanesi # 2 - daha yakın zamanda korunur. # 3 - daha fazla özellik.PECL/memcache için dezavantaj yoktur.

2
CaptTofu

Drupal 6 ve php-pecl-memcached ile yanıt sürelerinin arama başına 5 ms'ye kadar ertelendiği ve belirli bir sitenin 5 kat daha fazla çağrı oluşturmasına neden olacağım php-pecl-memcached'e geçmeden önce php-pecl-memcache olarak değiştirmek gecikme ve ekstra çağrılar gibi tüm sorunları düzeltti.

Bu cevap sadece Drupal 6 ve muhtemelen Drupal 7] kullananlar için buradadır.

0
Spechal