سؤال

لدي موقف حيث يمكنني الاستفادة حقًا من وجود نظام مثل memcached، ولكن مع القدرة على تخزين قائمة العناصر المصنفة (لكل مفتاح)، وتعديل القائمة عن طريق إضافة القيم.

على سبيل المثال:

something.add_to_sorted_list( 'topics_list_sorted_by_title', 1234, 'some_title')
something.add_to_sorted_list( 'topics_list_sorted_by_title', 5436, 'zzz')
something.add_to_sorted_list( 'topics_list_sorted_by_title', 5623, 'aaa')

والتي يمكنني بعد ذلك استخدامها مثل هذا:

something.get_list_size( 'topics_list_sorted_by_title' )
// returns 3
something.get_list_elements( 'topics_list_sorted_by_title', 1, 10 )
// returns: 5623, 1234, 5436

سيسمح لي النظام المطلوب بالحصول بسهولة على عدد العناصر في كل مصفوفة، وجلب أي عدد من القيم من المصفوفة، مع افتراض أن القيم مرتبة باستخدام القيمة المرفقة.

أتمنى أن يكون الوصف واضحا.والسؤال بسيط نسبيا:هل هناك أي نظام من هذا القبيل؟

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

المحلول

ورديس يدعم كلا من قوائم ومجموعات. يمكنك تعطيل توفير القرص وذلك مثل استخدام أعطها بدلا من الذهاب للMongoDB الذي من شأنه أن يوفر البيانات إلى القرص.

نصائح أخرى

ونلقي نظرة على MongoDB . ويستخدم الذاكرة المعينة الملفات، لذلك هو سريع بشكل لا يصدق ويجب أداء على مستوى المقارن لأعطها.

وMongoDB هو قاعدة بيانات مخطط أقل التي يجب أن تدعم ما كنت تبحث عن (الفهرسة / الفرز)

وMongoDB سيكون مناسبا. ما هو مهم لديها مؤشرات، حتى تتمكن من إضافة فهرس حسب العنوان لجمع الموضوعات وثم استرداد العناصر التي تم فرزها حسب الفهرس:

db.topics.ensureIndex({"title": 1})
db.topics.find().sort({"title": 1})

لماذا لا نقوم فقط بتخزين مصفوفة في memcached؟على الأقل في python و PHP تدعم واجهات برمجة التطبيقات memcached هذا (أعتقد أن python يستخدم المخلل ولكني لا أتذكر ذلك بالتأكيد).

إذا كنت بحاجة إلى تخزين دائم أو نسخ احتياطي للبيانات، فإن memcacheDB يستخدم نفس واجهة برمجة التطبيقات.

مثال على البايثون الكاذب الأساسي:

الحصول على البيانات المخزنةمخزنة=cache.get(storedDataName)

تهيئة القائمة إذا لم تقم بتخزين أي شيء مسبقًاإذا (مخزنة == لا شيء):مخزنة = {}

---------------- العثور على العناصر المخزنة

يحاول:بالفعل haveItem = تخزين [itemkey] باستثناء keyerror:طباعة "لا توجد نتيجة في ذاكرة التخزين المؤقت"

---------------- إضافة عناصر جديدة

للعنصر في newItemsDict:مخزنة[البند]=newItems[البند]

---------------- حفظ النتائج في ذاكرة التخزين المؤقتCache.set(storedDataName,stored,TTL)

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