memcache vs memcached?


76

Memcached kullanmak istiyorum

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

Ben yükledim yum install memcached

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

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

Birisi beni burada doğru yöne işaret edebilir mi? Hangisi çalışacak?

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


24
Şimdi bu soruya bakıyorsanız, lütfen kabul edilen cevabın yanlış olduğunu unutmayın . Yalnızca isme dayalı bir çözüm seçmek, özellikle de daha iyi isme sahip olan daha kötü bir proje olduğunda tehlikelidir. Lütfen daha fazla bilgi için diğer cevaplara bakınız.
tylerl

teşekkürler, lütfen kontrol ettiğiniz cevabın işaretini kaldırın. Bu sadece daha fazla insanın buraya geç kalmasına neden olacak. Bu arada, yanlış cevabı reddettim ve başkalarının da onaylamadıkça teşekkür edene kadar aynı şeyi yapmalarını öneriyorum.
joedevon

Yanıtlar:


24

Kısa cevap: Her ikisi de aradığınız şeydir, ancak ilk tercihim yalnızca terminolojinin doğru kullanımına dayanan memcache (ilk listelenen) .

İşte şimdi bu sonuca vardım:

İşte soru soran kişinin sıkıntısını açıklayan sözleşmelerin (yabancı kişiler için) isimlendirilmesinde hızlı bir arka planlayıcıdır: Birçok * nix başvurusu için, arka uç çalışmasını yapan parçaya Windows'ta "daemon" denir (Windows'ta "hizmet" düşünün). Arazi), arayüz veya müşteri uygulaması iken, arka plan programı kontrol etmek veya erişmek için kullandığınız şey. Bu servise, müşteriyle aynı ad verilir; buna "d" harfi eklenir. Örneğin, "imap", "imapd" arka planına bağlanan bir istemci olabilir.

Bu adlandırma kuralı, memcache modülüne girişi okuduğunuzda memcache tarafından açıkça uygulanmaktadır (memcache ile bu alıntıda memcached arasındaki farkı görün):

Memcache modülü, özellikle dinamik web uygulamalarında veritabanı yükünü azaltmak için tasarlanan memcached, oldukça etkili önbellek arka plan programı için kullanışlı prosedür ve nesne yönelimli bir arayüz sağlar.

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

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

Engellenme burada kötü seçildi PHP uzantısı yazarı kaynaklanır memcached denir fiili cini aynı adı paylaşan beri, memcached . Ayrıca, memcached girişine (php modülü) , modül tarafından memcached daemon'a erişmek için kullanılan paylaşılan kütüphane (veya API) olan libmemcached'den söz edildiğine dikkat edin:

memcached, doğası gereği jenerik olan, ancak veritabanı yükünü hafifleterek dinamik web uygulamalarını hızlandırmak için kullanılması amaçlanan yüksek performanslı, dağıtılmış bir bellek nesnesi önbellekleme sistemidir.

Bu eklenti memcached sunucuları ile iletişim kurmak için API sağlamak için libmemcached kütüphanesini kullanır. Aynı zamanda bir oturum işleyicisi (memcached) sağlar.

Libmemcached ile ilgili bilgiler » http://tangent.org/552/libmemcached.html adresinde bulunabilir .

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


70
Projenin adı gerçekten bir uygulamayı diğerinden seçmek için uygun bir neden mi?
David Pashley

4
David: Pek değil ... ama kesinlikle testime kadar belirli bir uygulamadan ayrılmamın bir nedeni, bu yüzden diğerlerine etkili bir şekilde tercih etmem. Muhtemelen hala mevcut tüm uygulamaları denemeliyim, ancak yazara yazılan yazılımdaki teknik kusurlar, yazılımda hangi teknik kusurların bulunabileceğini merak etmeme neden oluyor. Gerçek yazılım hakkında görüşünüzü okudum, bu yüzden de cevabınız için size bir artı ifade verdim. :-)
Jessica McKinnon

4
Memcached'deki d 'nin deamon demek olduğunu, ama fiil önbelleğinin geçmiş katılımını kastettiğini hiç düşünmedim. Artı, yeni arayüzü "memcache" olarak adlandıramazsınız, çünkü zaten bu isimde bir tane vardı.
GetFree,

9
Hata miktarı ve uzatmanın aktif olarak geliştirilip geliştirilmediği, sorunlu hakkında anal olmaktan çok daha önemlidir d. Cidden, böyle bir şey yüzünden en son bir uzantıyı test etmeyi düşünmemelisiniz, tamamen
yarasadan

12
Erm, ikisi de işlevsel olarak aynı değil : memcachedörneğin cas tokenleri destekliyor memcache, değil. Bunlara ihtiyacınız varsa, hangisinin (hasta olarak adlandırılmış olsun veya olmasın) seçildiğini bilirsiniz.
Eylül'de

56

Muhtemelen PHP Müşteri Karşılaştırma görmek istersiniz .

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

Diğer konuyla ilgili: Evet, yapabilmelisiniz telnet 127.0.0.1 11211. Çok az sayıda güvenlik duvarı localhost'un kendisiyle iletişim kurmasını engeller. Bağlanamıyorsanız, memcached'in gerçekten çalıştığını doğrulayın; bu, memcached'i ps auxwww | grep memcachedbaşlatmak için kullanılan komut satırı argümanlarını da gösterir. Argümanlardan biri -p 11211veya başka bir port numarası olmalıdır. man memcachedMümkün olan tüm argümanların anlamını görün .


2
Bazı sorun giderme adımlarını eklediğiniz için oy verin.
Jessica McKinnon

Bu gerçekten açık bir cevap.
danidacar

@Nate, Windows eşdeğeri nedir ps auxwww | grep memcached?
Pacerier

1
@Pacerier: superuser.com/questions/415360/… adresine bir göz atın . İşlem Gezgini, çalışan bir işlem bulmanın ve komut satırı argümanlarını görmenin en kolay yoludur.
Nate

@Pacerier, bu komutun sunucu işleminin çalışıp çalışmadığını ve nasıl çağrıldığını kontrol etmesini sağlar.
Jasen,

27

Nate'in bağlantısının önerdiği gibi, her ikisi de basit kullanım için mükemmel çalışıyor. Ancak memcached, memcached'den en yüksek performansı almanıza izin veren daha fazla özelliği destekler. İkili protokol, istemci ve sunucu arasında gönderilmesi gereken veri miktarını azaltır. Multigets ve multisets, aynı anda birden fazla öğe almanıza / ayarlamanıza izin verir. Eğer memcache dışında daha fazla bilgiye ihtiyacınız varsa, memcached daha iyi bir modüldür. Libmemcached kullanımı kütüphanenin kendisinin muhtemelen sadece PHP sürümünden daha optimize olduğunu göstermektedir.

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


Harika bir açıklama!
john

21

Eski, üşüşmüş biri denir, php-memcacheçünkü en uygun isim bu gibi görünüyordu. Digg'deki millet tarafından bağımsız olarak geliştirilen daha yeni, daha iyi sürüm, bunun yerine php-memcached, hakaretten kaçınma adına seçildi .

Sizi birbiri ardına seçmenizi tavsiye edecek kişilerin sadece ismin doğruluğuna dayanarak gerçekten teknik öneride bulunan hiçbir işi yok.


6

Son zamanlarda php-memcache kullanmış olsaydım, sizi php-memcached'e yönlendirmem gerekiyor.

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

1) getErrorCode () veya eşdeğeri bir yöntem yoktur, bu nedenle get () FALSE döndürürse, bunun memcache'de depolanan değerin yanlış olduğu veya bir tür sorun olup olmadığı hakkında hiçbir fikriniz olmaz.

2) Tutarlı karmama için karma algoritması, libmemcached'den inşa edilmiş birçok müşteri kütüphanesi gibi diğer uygulamalardan farklı görünmektedir. Bu, aynı memcache kümesini birden fazla dilde kullanmak istiyorsanız, PHP istemcisiyle bir değer depolayacağınız sorunlara sahip olacağınız ve diğer istemcilerin bulamayacağı anlamına gelir.


3

Her ikisinin de bugünden itibaren sorunları var. PECL / memcache eski ve güvenilirdir, tarihin dışında olduğu birkaç istisna dışında. PECL / memcached 1.x en iyi ihtimalle beta şeklindedir. Bazı işlevler sayısal tuşlarla uğraşmaz, kalıcı bağlantılar kullanırken bağlantıları keser. Bazıları (tümü?) GitHub'da sabitleniyor ve 2.x'de bir noktada serbest bırakılacak, ancak bugün değil. Daha ayrıntılı bir inceleme için bakınız http://brian.moonspot.net/php-memcached-issues


PECL / memcached 1.x şimdi kararlıdır; PECL / memcache 2.x sınırlıdır; PECL / memcache 3.x oldukça kararsız.
aredridel,

2

"Uzman PHP ve MySQL" adlı bir kitap üzerinde çalışıyorum. Farklar için de hemen hemen aynı şeyi yazdım. Tavsiye ettiğim şey PECL / memcached idi. # 1 - tam özellikli ve iyi performans gösteren bir C kütüphanesinin etrafına sarılır # 2 - daha yakın zamanda korunur. # 3 - daha fazla özellik. PECL / memcache'de hiçbir ayrılma olmaz.


0

Drupal 6 ve php-pecl-memcached ile ilgili oldukça ciddi sorunlar yaşadım, bu sayede yanıtlama süreleri çağrı başına 5 ms'ye kadar ertelendi ve belirli bir sitenin php-pecl-memcached uygulamasından önceki 5 kat daha fazla çağrı oluşturmasına neden olacaktı . Php-pecl-memcache dosyasındaki değişiklik tüm sorunları çözdü; gecikme ve ek aramalar.

Bu cevap sadece Drupal 6 ve muhtemelen Drupal 7 kullananlara yardım etmek için burada.


-3
  • memcache memcached istemcisidir (sunucu)
  • libmemcached ayrıca memcached için bir istemci

Memcached için başka müşteriler de var, bkz. Http://code.google.com/p/memcached/wiki/Clients

Web'den kes ve yapıştır:

http://www.php.net/manual/en/intro.memcache.php

  Memcache module provides handy procedural and object oriented 
  interface to memcached, highly effective caching daemon, which was 
  especially designed to decrease database load in dynamic web applications.
The Memcache module also provides a session handler (memcache).
More information about memcached can be found at » www.memcached.org 

http://www.php.net/manual/en/intro.memcached.php

   » memcached (http://www_memcached_org/) is a high-performance, distributed 
  memory object caching system, generic in nature, but intended for use in 
  speeding up dynamic web applications by alleviating database load.
  This extension uses libmemcached library to provide API for communicating with
  memcached servers. It also provides a session handler (memcached).
  Information about libmemcached can be found at 
   » tangent.org/552/libmemcached.html

http://pecl.php.net/package/memcached "Libmemcached kütüphanesi aracılığıyla memcached ile arayüz oluşturmak için PHP eklentisi" Bu eklenti memcached sunucuları ile haberleşmek için API sağlamak için libmemcached kütüphanesini kullanır. https://github.com/andreiz/php-memcached

http://pecl.php.net/package/memcache "memcached extension" Memcached, nesneleri bellekte saklayarak veritabanı yükünü azaltmak için özellikle dinamik web uygulamaları için tasarlanmış bir önbellekleme programıdır. Bu eklenti, kullanışlı OO ve prosedürel arayüzler aracılığıyla memcached ile çalışmanıza izin verir.

http://code.google.com/p/memcached/wiki/PHPClientComparison

                        pecl/memcache      pecl/memcached
  First Release Date      2004-06-08         2009-01-29 (beta)
  Actively Developed?     Yes                    Yes
  External Dependency     None              libmemcached

6
Bu uzun soluklu cevap, poster için işleri netleştirmeye bile yaklaşmıyor. Poster zaten birden fazla müşteri olduğunun farkında. Bunları listelemek ve alternatif adlar önermek, doğru olanı seçmeyi kolaylaştırmaz.
Martijn Heemels
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.