Can you store an Array in Memcache?
Ben saklamak istiyorum;
- Bir kullanıcı numarası
- Bir kullanıcının fotoğraf URL
- A kullanıcılar isim
Together as an array, someone told me you could and then someone told me you couldn't Which is it?
Evet.
Memcache::set('someKey', array(
'user_id' => 1,
'url' => 'http://',
'name' => 'Dave'
));
Çok ayrıntılı örnekler için documentation bakın.
memcache bir öğenin maksimum depolama boyutu bir dizi boşluk biraz sürer serileştirip 1.048.576 Byte (1MB) olduğunu.
: basitçe gibi dizinizi yapısı olsaydı
array(
[0] => 1,
[1] => 2,
[2] => 3
)
anahtar varlık auto oluşturulan ve değer kullanıcı kimliği olmak.
5000 kullanıcılarının tefrika dizisi 50000 kullanıcıların 777.794 karakterleri bir dizi üretir, 67792 karakter, bir dize uzunluğu olan bu yapıyı kullanarak 1-5000 sayılı.
100.000-150.000 838.917 numaralandırma karakter tefrika dize üretir.
(önceki soruya başvurulan gibi) böylece 50k kullanıcıları, büyük olasılıkla 1MB sınırının altında olacak. Eğer herhangi bir nedenle bir kerede tüm kimlikleri ihtiyacınız yoksa bunun yerine, ya da, ben son derece bölme kadar sonuçları ya da sadece DB kullanarak öneririm rağmen yerel bir önbellek (APC, vs ..), kullanım varsa.
Ayrıca memcached olarak depolamak veri yapısı hakkında düşünüyorum. Size arama size birincil anahtarlar bir listesini vermek sadece önbellek kullanıyorsanız, diğer veriler gerekiyor?
Eğer memcached istediğimi hemen saklayabilirsiniz.
Diyor ki, memcache::set
a> belgelerine bakın:
bool Memcache::set(string $key, mixed $var [, int $flag [, int $expire ]] )
var
The variable to store. Strings and integers are stored as is, other types
tefrika saklanır.
Yani, evet, bir dizi, hatta bir nesneyi saklayabilir eğer gerekli :-)
BTW, it's the same with Memcache::add
and Memcache::replace
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
$id = $_REQUEST['name'];
$key = md5("SELECT * FROM memc where FirstName='{$id}'");
$get_result = array();
$get_result = $memcache->get($key);
if ($get_result) {
echo "<pre>\n";
echo "FirstName: " . $get_result['FirstName'] . "\n";
echo "Age: " . $get_result['Age'] . "\n";
echo "</pre>\n";
} else {
$query="SELECT * FROM memc where FirstName='{$id}'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
echo "<pre>\n";
echo "FirstName: " . $row[1] . "\n";
echo "Age: " . $row[3] . "\n";
echo "Retrieved from the Database\n";
echo "</pre>\n";
$memcache->set($key, $row, MEMCACHE_COMPRESSED, 60);
mysql_free_result($result);
}
add change database setting according to ur requirement ,tested code please try