ريديس جيتكس

Rydys Jytks



Redis هو مخزن بيانات ذو قيمة رئيسية يستخدم كمخزن مؤقت في الذاكرة ، وقاعدة بيانات ، وسلسلة زمنية ، ومحرك دفق ، ووسيط رسائل ، وما إلى ذلك ، نظرًا لأن مخزن بيانات Redis يستخدم تنسيقًا بسيطًا لزوج قيم المفاتيح للاحتفاظ بالبيانات ، فهو يمثل ذاكرة كبيرة فعالة. بالإضافة إلى ذلك ، فإن سرعة الاستعلام عالية جدًا مع تعقيدات الوقت المنخفض مثل O (1) و O (السجل (N)). يمكن أن تحتوي مفاتيح Redis على هياكل بيانات مختلفة ، مثل السلاسل والمجموعات والتجزئة والمجموعات المصنفة والقوائم.

عادةً ما يتم استخدام الأمرين GET و SET لتخزين واسترداد قيم نوع السلسلة المخزنة في مفتاح Redis معين. يعمل هذان الأمران مع تعقيد زمني ثابت.







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



TTL لمفتاح Redis

قيمة مدة البقاء (TTL) هي وقت انتهاء صلاحية جزء معين من البيانات. عادة ، يمكن ربط TTL بصفوف قاعدة البيانات. يمكن أيضًا ضبط المهلة باستخدام مفاتيح Redis. لذلك ، يمكن لعميل Redis التحقق من الثواني المتبقية التي سيتوفر فيها مفتاح معين في مخزن البيانات. يقدم Redis أمر TTL للتحقق من وقت القيمة الحية لمفتاح معين. إذا لم يكن هناك مهلة مقترنة بمفتاح محدد ، يقوم الأمر TTL بإرجاع -1. سنستخدم الأمر TTL في الأقسام التالية للتحقق من الوقت المتبقي لمفتاح معين.



أمر GETEX

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





مفتاح GETEX [ EX timeout_in_seconds. مهلة EX | مهلة PX_in_milliseconds | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-milliseconds | ثابر ]

مفتاح: هذا هو المفتاح الذي يشير إلى قيمة سلسلة.

يمكن استخدام الوسائط الاختيارية التالية لتعيين مهلة بالثواني أو بالملي ثانية.



السابق: سيحدد هذا وقت انتهاء الصلاحية بالثواني لمفتاح معين.

PX: سيتم تعيين قيمة مهلة المفتاح بالمللي ثانية.

بالإضافة إلى ذلك ، يمكننا تحديد قيمة طابع زمني UNIX بالثواني أو بالملي ثانية باستخدام خيارات الأوامر التالية EXAT و PXAT :

EXAT: سيتم تعيين وقت انتهاء الصلاحية بتنسيق الطابع الزمني UNIX ، وسيكون الطابع الزمني بالثواني.

PXAT: سيتم تعيين مهلة مفتاح Redis كطابع زمني UNIX بالمللي ثانية.

ثابر: من خلال تحديد هذا ، يمكنك إزالة الوقت للقيمة الحية المرتبطة بمفتاح محدد.

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

في القسم التالي ، سنغطي الاستخدام العملي لأمر GETEX.

حالة الاستخدام - رابط إعادة تعيين مؤقت أو إنشاء رمز PIN لاستعادة كلمة المرور / OTPs

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

لنفترض أن مستخدمًا لديه user_id 1000 يطلب استرداد كلمة المرور. لذلك ، يمكن تخزين عنوان URL الخاص بالاسترداد على المفتاح RecoveryURL: معرف المستخدم: 1000 . يمكننا استخدام الأمر SET لتخزين عنوان URL الخاص بالاسترداد على النحو التالي:

تعيين RecoveryURL: معرف المستخدم: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

دعونا نتحقق مما إذا كان عنوان URL للسلسلة مخزن بشكل صحيح في المفتاح RecoveryURL: معرف المستخدم: 1000. يمكننا استخدام أمر GETEX على النحو التالي:

getex RecoveryURL: معرف المستخدم: 1000

يظهر إخراج الأمر السابق في ما يلي:

إذا استخدمنا الأمر GET بدلاً من أمر GETEX ، فسيكون الإخراج هو نفسه.

لنستخدم الأمر TTL للتحقق مما إذا كان وقت انتهاء الصلاحية مرتبطًا بهذا المفتاح.

Ttl RecoveryURL: معرف المستخدم: 1000

كما هو متوقع ، تم إرجاع -1 بواسطة الأمر TTL ، مما يعني أنه لا يوجد وقت انتهاء صلاحية مرتبط بالمفتاح المحدد.

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

getex RecoveryURL: معرف المستخدم: 1000 السابق 500

لنقم بتشغيل الأمر TTL عدة مرات لفحص الوقت المتبقي الذي سيظل فيه المفتاح موجودًا في مخزن البيانات.

كما هو متوقع ، يتناقص الوقت ، وفي النهاية ، يتناقص RecoveryURL: معرف المستخدم: 1000 ستتم إزالة المفتاح. التالي هو الإخراج بعد 5 دقائق:

تم إرجاع -2 بواسطة الأمر ، مما يعني انتهاء صلاحية المفتاح وحذفه من مخزن البيانات.

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

فلننشئ نموذج مفتاح آخر ونخصص له قيمة سلسلة. في هذه الحالة ، سنحدد قيمة TTL بالمللي ثانية عن طريق تمرير PX اختيار.

تعيين KeytoTestPersist 'ستنتهي صلاحية هذا في غضون 60 ثانية' PX 50000

بعد ذلك ، سوف نتحقق من الوقت المتبقي على النحو التالي:

كما هو متوقع ، يتناقص TTL. دعنا نتصل بأمر GETEX مع خيار PERSIST على النحو التالي:

تستمر getex KeytoTestPersist

من الناحية المثالية ، سيؤدي هذا إلى إزالة TTL المرتبط بهذا المفتاح. دعنا نفحص TTL للمفتاح KeytoTestPersist.

قام الأمر TTL بإرجاع -1 ، مما يعني أنه لا يوجد TTL مرتبط بالمفتاح KeytoTestPersist.

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

استنتاج

باختصار ، يمكن استخدام الأمر Redis GETEX لاسترداد قيم السلسلة المخزنة في مفتاح معين كما يفعل الأمر GET. الاختلاف الوحيد مع أمر GETEX هو أنه يدعم ضبط أوقات انتهاء الصلاحية وإزالتها لمفتاح معين. وهو يدعم العديد من الوسائط الاختيارية لتحديد وقت انتهاء الصلاحية بالثواني ، والميلي ثانية ، والطابع الزمني لـ UNIX بالثواني أو المللي ثانية. كما تمت مناقشته ، يوفر الأمر خيار PERSIST لإزالة TTL المرتبط لمفتاح معين. بشكل عام ، يعمل أمر GETEX مع تعقيد زمني ثابت.