Memcache tabloya aktarmak

2 Cevap php

Ben büyük bir tablo var ve ben Memcache sonuçları saklamak istiyorum. Ben Memcache benim sunucu kurdunuz ama verimli bir şekilde büyük miktarda veri transferi konusunda herhangi bir yararlı belgeler (Ben bulabilirsiniz) orada görünmüyor. Şu anda aklınıza tek yolu tablonun anahtar ve değer kapmak ve sonra kaydeder bir mysql sorgu yazmak olduğunu memcache. Onun değil özellikle ölçeklenebilir bir çözüm (benim sorgu birkaç yüz bin satır üretir özellikle). Bunun nasıl herhangi bir tavsiye?

EDIT:.. Ben "yapmaya çalıştığınızı m hakkında bazı karışıklıklar var ben iki alanda (anahtar ve değer) ile bir tablo var Diyelim ki ben anında bilgi çekerek ve anahtar maç ve geri dönmek zorunda am değer. Ben onun anahtarı değerini kullanmak üzere ayarlanmış çünkü. Memcache mükemmel bir alternatif gibi görünüyor. Bu tablo 100K satırlar vardır diyelim sayfa başına yükü ~ 1000 sorguları çalıştırmak zorunda önlemek istiyorum. bunu almak için bildiğimiz tek yolu MEMCACHE için db tabloya veri tablosunda her satır döngüsü ve bireysel memcache satır oluşturur bir sorgu çalıştırmak.

Sorular: Bu memcache kullanmak için iyi bir yolu var mı? Eğer evet ise, benim masa aktarmak için daha iyi bir yolu var mı?

2 Cevap

Russ,

Bu MEMORY gitmek için bir yol olabilir neredeyse için depolama motoru seti ile bir MySQL tablo kullanarak gibi geliyor.

Bir RAM tabanlı tablo size SQL kullanarak esneklik verir ve aynı zamanda nedeniyle okur büyük bir miktarı / (memcached gibi) yazıyor disk dayak önler.

Ancak, bir RAM tabanlı tablo çok değişkendir. Şey tabloda saklanan ve bir disk tabanlı tabloya kızardı ve güç kaybedersiniz değilse ... iyi, sadece veri kaybetti. Söyleniyor, her seferinde bir süre gerçek bir disk tabanlı masaya floş sağlamak.

Ayrıca, bellek tabloları kullanarak başka bir artı tüm tipik MySQL veri türlerini saklayabilirsiniz, böylece hiçbir 1MB boyut sınırı vardır.

aslında bir dizideki tüm satırları çekin ve memcache diziyi saklayabilir

memcache_set($memcache_obj, 'var_key', $your_array);

ama bazı şeyleri hatırlamak zorunda

  • Eğer birçok satır varsa aslında DB sorgulama sonra yavaş olabilir bu yüzden PHP memcache dizi unserialize / serialize olacak
  • Bazı öğeleri filtrelemek isterseniz, herhangi bir filtreleme yapamazsınız (NO SQL), bu filtre kendinizi uygulamak zorunda ve muhtemelen DB motoru sonra kötü gerçekleştirmek olacaktır.
  • memcache daha sonra saklamak olmaz 1 megabyte ...

Sana ulaşmak için deneyin ne bilmiyorum ama memcache genel kullanımı:

  • SQL / zaman alıcı işleme sonucu depolamak ama satır sonuçlanan sayısının küçük olmalıdır
  • DB erişimi önlemek için bazı ön oluşturuldu (X) HTML lekeler saklayın.
  • kullanıcı oturum depolama