Redis: تنفيذ انتهاء الصلاحية على التجزئة

تم إنشاؤها على ٢٨ أكتوبر ٢٠١١  ·  44تعليقات  ·  مصدر: redis/redis

مرحبًا ، أود أن أعرف ما إذا كان من الممكن تعيين وقت انتهاء الصلاحية على مفاتيح التجزئة؟
على سبيل المثال ، أود الحصول على قائمة الأعضاء المتصلين في تجزئة مع انتهاء صلاحية 5 دقائق على كل مفتاح.

هل هو ممكن؟

شكرا ، وآسف مقدما على لغتي الإنجليزية.

تحياتي ، ماكس

التعليق الأكثر فائدة

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

ال 44 كومينتر

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

redis 127.0.0.1:6379> انتهاء صلاحية hset: me name tom
(عدد صحيح) 0
redis 127.0.0.1:6379> انتهاء صلاحية hget
"توم"

redis 127.0.0.1:6379> انتهاء الصلاحية: أنا 10
(عدد صحيح) 1
redis 127.0.0.1:6379> انتهاء صلاحية ttl
(عدد صحيح) 8

...
...
...

redis 127.0.0.1:6379> انتهاء صلاحية ttl: me
(عدد صحيح] -1
redis 127.0.0.1:6379> انتهاء صلاحية hget
(لا شيء)

لذلك فهو يعمل

أعتقد أن الطلب هو أن تنتهي صلاحية الحقول الفردية. تنتهي صلاحية التجزئة بالكامل مع انتهاء صلاحية أي مفتاح آخر.

نعم ، لقد استوفيت أيضًا هذا المطلب. هل من الممكن أن تنتهي صلاحية الحقول الفردية؟

هل هناك مشكلة محددة في إنشاء تجزئات متعددة بأوقات انتهاء صلاحية مختلفة؟

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

شكرًا كيفن مينارد ويوهان بيرجستروم. في الواقع ، قابلت نفس السيناريو الموضح هنا: https : //github.com/antirez/redis/issues/242 ، وقد قرأت التعليقات التي قدمها سالفاتور.
إذا قمت بتقسيم جميع الحقول إلى مفاتيح مثل هذا: hashkey: field1 ، hashkey: field2 ، .. من الصعب إدارة هذه المفاتيح كمجموعة. مثل الاستعلام عن جميع الحقول ، مطلوب "باتن" المفاتيح ...

يعتبر،
Dengchunping

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

لدي نفس المشكلة مع bjoshuanoah ، الآن ، أنا أستخدم المفتاح مع ttl بدلاً من التجزئة ، على سبيل المثال:
الهاش: Hashname A - Key B - Value C
مفتاح القيمة: المفتاح A_B - القيمة C

هل الافتقار إلى هذه الميزة غير ممكن تقنيًا أم أنه اختيار التصميم؟

يؤدي اختيار التصميم إلى تنفيذ لا يسمح بالتنفيذ.

: +1:

لا يدعم redis نفسه ، فهذه الوظيفة مفيدة للغاية.

حتى اليوم لم يخطط redis لتنفيذ هذه الوظيفة :-(

redis 127.0.0.1:6379> انتهاء صلاحية hset: me name tom
(عدد صحيح) 0
redis 127.0.0.1:6379> انتهاء صلاحية hget
"توم"

redis 127.0.0.1:6379> انتهاء الصلاحية: أنا 10
(عدد صحيح) 1
redis 127.0.0.1:6379> انتهاء صلاحية ttl
(عدد صحيح) 8

...
...
...

redis 127.0.0.1:6379> انتهاء صلاحية ttl: me
(عدد صحيح] -1
redis 127.0.0.1:6379> انتهاء صلاحية hget
(لا شيء)

لذلك فهو يعمل

يوجد حقل واحد فقط في الهاشتابل ، فماذا عن الحقول المتعددة؟ انها لن تعمل بشكل صحيح!

oylz - أعتقد أن الغرض الأصلي من طلب الميزة هذا هو السماح حقول معينة داخل التجزئة ، وليس المفتاح بأكمله.

تضمين التغريدة
كيف يمكن أن يكون مثل هذا ؟:
انتهاء صلاحية hset
انتهاء صلاحية hset
انتهاء صلاحية hset

ttl expire: أنا 10

ستنتهي صلاحية علامة التجزئة بالكامل (expire: me).

oylz نعلم أن التجزئة الكاملة ستنتهي صلاحيتها. إنه يعمل ولكن هنا نتحدث عن حقل واحد من أي تجزئة (كما أوضح لك itamarhaber بالفعل). على سبيل المثال ، في حالتك كيف يمكنك انتهاء صلاحية حقل name1 بعد 5s و name2 بعد 10 والاسم 3 بعد 15 ثانية؟ آمل الآن أن يكون واضحًا ما هي حالة الاستخدام قيد المناقشة هنا.

@ nomi-ramzan
هل تفهم حقا كما قال itamarhaber : "أعتقد أن القصد الأصلي من طلب الميزة هذا هو السماح حقول معينة داخل التجزئة ، وليس المفتاح بأكمله ."

@ nomi-ramzan
آسف ، أجبتك خطأ في البداية ، يجب أن أجيب
على سبيل المثال:
_redis 127.0.0.1:6379> انتهاء صلاحية hset: me name tom
(عدد صحيح) 0
redis 127.0.0.1:6379> انتهاء صلاحية hget
"توم"

redis 127.0.0.1:6379> انتهاء الصلاحية: أنا 10
(عدد صحيح) 1
redis 127.0.0.1:6379> انتهاء صلاحية ttl
(عدد صحيح) 8

...
...
...

redis 127.0.0.1:6379> انتهاء صلاحية ttl: me
(عدد صحيح] -1
redis 127.0.0.1:6379> انتهاء صلاحية hget
(لا شيء)

لذلك فهو يعمل

هذا هو عام 2020 ، يجب على Redis النظر في هذا الأمر

قامت شركتنا بتنفيذ وظيفة حقل التجزئة منتهية الصلاحية
انها قاعدة redis 4.0

سيكون توفير هذه الميزة في الأصل مفيدًا جدًا.
شكرا.

ما زلت أنتظر هذا

لا يصدق! لا يزال ريديس لم ينفذه!

الشيء نفسه هنا ، سيكون من الرائع أن يكون لديك القدرة على تعيين انتهاء الصلاحية على حقول التجزئة

+1

لا يصدق! لا يزال ريديس لم ينفذه!

+1 لهذه الميزة

بعد أن اكتشفت عالم Redis ، تخيلت تخزين ذاكرة التخزين المؤقت بهذا الشكل:
1) كل جدول تجزئة - هو طريقة API الخاصة بي
2) الصفوف في جداول التجزئة - دالة تجزئة لمعلمات الإدخال للطريقة والقيمة هي استجابة الطريقة

+1 لهذه الميزة

+1 لهذه الميزة

+1

+1

+1

+1

هل هناك سبب محدد لانتهاء صلاحية المفاتيح في التجزئات؟

يرجع السبب في عدم تنفيذ ذلك مطلقًا إلى التعقيد المتزايد للوقت (وحدة المعالجة المركزية) والمساحة (ذاكرة الوصول العشوائي) التي تتطلبها هذه الميزة. بعد قولي هذا ، لا تقل أبدًا أبدًا.

هل تعقيد الوقت يسير بترتيب كثير الحدود؟ ما الذي يجعل ذاكرة الوصول العشوائي مكثفة رغم ذلك ، والاستنساخ لأي غرض من الأغراض؟

أنا متأكد من أنه إذا تم تنفيذ هذه الميزة ، فستحصل Redis على زيادة كبيرة في شعبيتها

+1 لهذه الميزة

+1

+1

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات