PHP: memcached vs tmpfs

4 Cevap php

Ben RAM bilgi (oturumları ve dizeleri bir sürü) saklamak istiyorum ve ben bir tmpfs veya memcached sunucusu kullanmak gerekir eğer ben bilmiyorum. Birisi bazı kriter yaptım ve hangisinin daha hızlı olduğunu kimse bilmiyor? Bu bilgiler PHP bir webchat gibi kaydedilir kullanıcı başına, her 1-5 saniyede bir istekleri bazı ajax komut için ihtiyaç duyulan. Yani PHP oldukça sık MEMCACHE bağlanmak zorundadır.

The advantage of using tmpfs whould be that I can create a lot of files and have a structur (dirs), while I only have a key-value system in memcached, but there i could use arrays or objects to store information. CPU load whould be interesting, too, if there is any difference.

Teşekkürler.

4 Cevap

Sadece birkaç puan

  1. tmpfs veya ramdisk memcached daha olgun (artık etrafında olmuştur ama her ikisi de kararlı
  2. tmpfs (Eğer tmpfs içeriğini kaybetmeden gerekli şekilde yeniden boyutlandırmak veya artırabilir ölçeklenebilir
  3. Eğer makineler arasında bu bilgileri paylaşmak istiyorsanız, başka bir makinede belleğe ihtiyaç veya varsa memcahced harika.
  4. Yerel dosya / soket / boru performans DAİMA ağ yuva daha hızlıdır ve herhangi bir 3. parti kütüphaneler gerektirmez böylece tmpfs bir dosyayı erişen herhangi bir diğer dosya aynıdır.

Eğer büyümeye sunucu kullanımı tmpfs üzerinde bellek size veri beklemeyin eğer.

Eğer sunucular arasında veri paylaşımı veya neyin memcahed yerel sunucu kullanımı RAM sığar ki daha fazla veri saklamak istiyorsanız gerekir.

Gerçekten hızı hakkında bilmiyorum, ama burada memcached hakkında dikkate şeyler bir çift vardır:

  • memcached is based on a cluster-type architecture : you can add as many physical servers as you want, install a memcached daemon on it, and you have more memory in your cluster
    • Eğer daha fazla bellek gerekiyorsa, sadece sunucuların bir çift ekleyin: hangi memcached kullanarak size önbelleğe veri miktarı ile hemen hemen hiçbir sınır var demektir
    • Öte yandan, tmpfs ile, her bir sunucuda kullanılabilir RAM miktarı ile sınırlı konum
  • memcached is a önbelleğe alma mecanism ; it's not made to store data ; which means :
    • Yeni bir öğe saklamak için sol yeterli bellek olmadığı zaman, eski öğeleri önbellekten kaldırılır
    • Her öğe bir ömrü vardır; zaman aşımına olduğunda, madde önbellekten silinir
  • memcached paylaşılan: Tek bir memcached kümesine erişen birkaç PHP sunucu olabilir
  • There are many existing libraries based on memcached, or created to access memcached
    • PHP için bazı oturum mekanizmasından dahil
    • ve çeşitli önbelleğe alma kütüphaneleri
  • memcached ne tmpfs ne kalıcılığı için yapılır - Eğer inat verilerinizi gerekiyorsa (i.e. still be available even after a reboot), bir veritabanı gibi bir şey kullanmak gerekir.


In the end, not sure about tmpfs, but I would probably use memcached, at least when it comes to :

  • oturumları
  • önbelleğe alma

Neden? O çünkü:

  • olgun -, birçok kütüphane vardır, çok kullanılır ...
  • ve ölçeklenebilir

Ramdisk ve memcached hem de hızlı yanan vardır.

Eğer sorun üzerinde MySQL kullanıyorsanız, hızlandırıcı herhangi bir öneme sahip olacağını sanmıyorum.

Ben şahsen yerine memcached arasında Redis tercih ederim.

İşte artıları / eksileri vardır:

  1. hiçbir ram varsa memcached bir anahtarı silebilirsiniz. Redis ve dosyalar bunu asla.

  2. Bazı yazılım gibi Joomla oturumları dosyalarda değilse yüklemek için başarısız (örneğin memcached / Redis)

  3. memcache ve yeniden dağıtılmış hem de birkaç php sunucularını hizmet etmek mümkün olacak, böylece bir kümede sopa oturumları kullanmak mümkün olmayacaktır.

  4. memcached sonra, yeniden dağıtılmış olup o ramdisktir, sonra memcachedb, daha sonra mysql, o dosya sistemi oturumları, hızlıdır.

  5. ramdisk taklit Normal php oturumları davranış ve yüklü olması için bir şey gerekmez.

  6. ramdisk mount başarısız olursa, php dosya sistemine çare olacak ve hala çalışmaları (sunucu bot varsayarak) olacak

  7. memcached veya yeniden dağıtılmış durmasına eğer, php kötü hata vermek ve tüm başlar değildir.

Umarım bu yardımcı olur.

Aslında memcacheDB neye ihtiyacınız için kullanabilirsiniz.