سؤال

يمكنك تخزين مجموعة في Memcache?

أود أن مخزن ؛

  1. المستخدم رقم الهوية
  2. المستخدم الصورة URL
  3. مستخدمين اسم

معا مجموعة ، قال لي أحدهم هل يمكن ثم قال لي أحدهم أنت لا الذي هو ؟

هل كانت مفيدة؟

المحلول

نعم.

Memcache::set('someKey', array(
    'user_id' => 1,
    'url' => 'http://',
    'name' => 'Dave'
));

يرجى الاطلاع على الوثائق للحصول على أمثلة مفصلة جدا.

نصائح أخرى

الحد الأقصى لحجم التخزين بند في memcache هو 1,048,576 بايت (1MB), التسلسلية مجموعة يستغرق قليلا من الفضاء.

إذا كنت تريد هيكل الصفيف الخاص بك ببساطة كما:

array(
    [0] => 1,
    [1] => 2,
    [2] => 3
)

الرئيسية السيارات ولدت قيمة كونها هوية المستخدم.

وهو تسلسل مجموعة من المستخدمين 5000 مرقمة 1-5000 استخدام هذا الهيكل على طول سلسلة من 67792 الشخصيات, 50000 المستخدمين تنتج مجموعة من 777794 الشخصيات.

ترقيم 100000 الى 150000 تنتج تسلسل سلسلة من 838917 الشخصيات.

حتى في 50k المستخدمين (المشار إليها في السؤال السابق) ، من المرجح أن تكون تحت 1MB الحد.إذا كان لديك ذاكرة التخزين المؤقت المحلية على الرغم من (APC, الخ...), استخدام بدلا من ذلك ، أو إذا كان لأي سبب من الأسباب لا تحتاج في كل معرفات في آن واحد ، أود أن أقترح بشدة تقسيم النتائج أو ببساطة باستخدام ديسيبل.

أيضا التفكير في بنية البيانات التي تخزنها في أعطها.إذا كنت تستخدم ذاكرة التخزين المؤقت ببساطة أن أعطيك قائمة من المفاتيح الأساسية إلى بحث ، هل تحتاج إلى البيانات الأخرى ؟

$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);
}

إضافة تغيير إعداد قاعدة بيانات وفقا اور شرط اختبار التعليمات البرمجية يرجى المحاولة

يمكنك تخزين ما يقرب من كل ما تريد في أعطها.

راجع وثائق memcache::set, الذي يقول :

bool Memcache::set(string $key, mixed $var [, int $flag [, int $expire ]] )

فار

The variable to store. Strings and integers are stored as is, other types

يتم تخزين تسلسل.

لذا, نعم, يمكنك تخزين مجموعة ، أو حتى كائن إذا لزم الأمر :-)


راجع للشغل, انها نفس مع Memcache::add و Memcache::replace

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top