2011-02-03 19 views

cevap

18

Üzgünüz, ama hayır. Memcached, anahtarları rasgele yerlerde dağıtan bir karma algoritması kullanır ve bu anahtarlar her yere dağılır. Onları bulmak için her şeyi taraman gerek.

Ayrıca, tasarım gereği, memcached'ın herhangi bir anda herhangi bir anda herhangi bir anahtarı bırakabileceğini bilmelisiniz. Eğer bir şeyleri koyarsanız, geri dönüşe bağlı olamayacağınızın farkında olmalısınız. Bu, orijinal kullanım durumu için bir veritabanı üzerindeki isabetleri azaltmak için bir önbellek için kesinlikle iyidir. Bununla daha karmaşık bir şey yapmak istiyorsanız, ciddi bir sorun olabilir.

Bu sınırlamalar bir sorunsa, bunun yerine Redis kullanmanız önerilir. Veriyi kalıcı hale getirmesi ve karmaşık veri yapılarını saklamanız dışında, memcached gibi davranır. Bu yüzden kullanım durumunuz için bir karma değerini Redis'te saklayabilir, daha sonra tüm karmayı daha sonra çekebilirsiniz.

3

Ad boşluğunu kullanabilir ve ihtiyacınız olanı gerçekleştirebilirsiniz. İşte aynı şeyi yapan bir PHP kütüphanesi. Birden çok Uygulama için aynı Memcached kullanabilirsiniz. @btilly doğal olarak bu yapmaz memcached söyleyerek doğru olsa da

https://github.com/vijayabose/n_memcached

4

, size daha sonra tüm girişleri almak için izin, önek paylaşan tuşların bir dizin oluşturarak bunu (oldukça verimli) taklit edebilir belirli bir önekle eşleşiyor.

Açıkçası bu, yalnızca önceden seçmiş olduğunuz ve rastgele veriler olmayan belirli anahtarlar için çalışacaktır, ancak bu sınırlamayla yaşayabiliyorsanız oldukça uygulanabilir. Memcache geliştiricilerinden biri tarafından a good article on this subject var.

3

Hızlı bir komut biz aramak yukarıda

for i in {1..40}; do (echo "stats cachedump $i 0"; sleep 1; echo "quit";) | telnet localhost 11211 | grep 'APREFIX*\|ANOTHERPREFIX*'; done 
at) tartışmaya dayalı
  • ; | 'ANOTHERPREFIX * APREFIX * \' 40
  • 1'den levhalar grep bölümünü kaçırmayın
  • İlgili konular