redis - التعامل مع التغييرات على هياكل البيانات

StackOverflow https://stackoverflow.com/questions/4606408

  •  25-09-2019
  •  | 
  •  

سؤال

لقد قمت بتجربة Redis ، وأحب حقًا قابلية التوسع التي يجلبها إلى الطاولة. ومع ذلك ، أتساءل عن كيفية التعامل مع التغييرات على هياكل البيانات لنظام موجود بالفعل في الإنتاج.

على سبيل المثال ، اسمحوا لي أن أقول إنني أقوم بجمع معلومات عن المستخدم ، وأنا أستخدم user_id كمفتاح ، وألقيت البيانات الأخرى حول المستخدم كقيم مفصولة بفاصلة.

user_id: name, email, etc.

الآن ، قل بعد حوالي 100000 سجل ، أدرك أنني بحاجة للاستعلام عن طريق email - كيف يمكنني الآن أخذ لقطة من البيانات الموجودة وإنشاء فهرس جديد لها؟

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

المحلول

من فهمي لـ Redis ، سيتطلب هذا شيئًا لا يتم تصميم Redis للقيام به. يجب أن تضطر إلى حلقة جميع سجلاتك (باستخدام المفاتيح *) ثم تغيير ترتيب البيانات وإنشاء مفتاح جديد. أنا شخصياً أوصي باستخدام قائمة بدلاً من سلسلة مفصولة بفاصلة. في القائمة ، يمكنك إعادة ترتيبها من داخل Redis. تبدو قائمة Redis كما يلي:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something

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

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something
"c.mcgaley@gmail.com" => "Colum"

لذلك يمكنني الاستعلام عن المعرف أو البريد الإلكتروني وما زلت أحصل على المعلومات التي أحتاجها.

آسف لأنني لم أتمكن من الإجابة مباشرة على سؤالك. فقط آمل أن يكون هذا ساعد.

نصائح أخرى

يعد استخدام CSV فكرة رائعة إذا كنت ترغب في دعم التغييرات. تحتاج إلى استخدام المسلسل الذي يتعامل مع القيم المفقودة/الجديدة إذا كان كل شيء في مفتاح واحد ، أو يمكنك استخدام تجزئة Redis ، مما يمنحك مفاتيح فرعية مسماة. في كلتا الحالتين ، يمكنك إضافة/إزالة الحقول مع المتطلب الوحيد هو أن الكود الخاص بك يعرف ما يجب القيام به إذا قرأ سجل بدون قيمة جديدة.

للسماح بالبحث عن طريق البريد الإلكتروني ، تحتاج إلى إضافة فهرس - بشكل أساسي مفتاح (أو قائمة) لكل بريد إلكتروني مع معرف المستخدم كقيمة. ستحتاج إلى ملء هذا الفهرس من خلال الحصول على جميع المفاتيح مرة واحدة ، ثم التأكد من تحديثه عند تغيير رسائل البريد الإلكتروني.

يمكنك التكرار على جميع المفاتيح وتخزينها بمعرف مختلف ، لكن هذا ربما يكون مشكلة أكثر مما يستحق.

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