إصدار Redis 7.0

تم نشر إصدار Redis 7.0 DBMS، الذي ينتمي إلى فئة أنظمة NoSQL. يوفر Redis وظائف لتخزين بيانات المفتاح/القيمة، معززة بدعم تنسيقات البيانات المنظمة مثل القوائم والتجزئة والمجموعات، بالإضافة إلى القدرة على تشغيل معالجات البرامج النصية من جانب الخادم في Lua. يتم توفير رمز المشروع بموجب ترخيص BSD. تم توفير الوحدات الإضافية التي توفر إمكانات متقدمة لمستخدمي الشركات، مثل RediSearch وRedisGraph وRedisJSON وRedisML وRedisBloom، بموجب ترخيص RSAL خاص منذ عام 2019. حاول مشروع GoodFORM، الذي كان يعاني من الركود مؤخرًا، مواصلة تطوير الإصدارات المفتوحة من هذه الوحدات بموجب ترخيص AGPLv3.

على عكس أنظمة التخزين في الذاكرة مثل Memcached، يضمن Redis تخزين البيانات باستمرار على القرص ويضمن بقاء قاعدة البيانات سليمة في حالة حدوث عطل. يتم توزيع الكود المصدري للمشروع بموجب ترخيص BSD. تتوفر مكتبات العملاء لمعظم اللغات الشائعة، بما في ذلك Perl وPython وPHP وJava وRuby وTcl. يدعم Redis المعاملات، التي تسمح لك بتنفيذ مجموعة من الأوامر في خطوة واحدة، مما يضمن الاتساق والاتساق (الأوامر الواردة من الطلبات الأخرى لا يمكن أن تتداخل) في تنفيذ مجموعة معينة من الأوامر، وفي حالة حدوث مشاكل، يسمح لك بالتراجع التغييرات. يتم تخزين جميع البيانات مؤقتًا بالكامل في ذاكرة الوصول العشوائي (RAM).

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

التغييرات الرئيسية في Redis 7.0:

  • تمت إضافة دعم للوظائف من جانب الخادم. على عكس البرامج النصية المدعومة مسبقًا في لغة Lua، لا ترتبط الوظائف بالتطبيق وتهدف إلى تنفيذ منطق إضافي يعمل على توسيع قدرات الخادم. تتم معالجة الوظائف بشكل لا ينفصم مع البيانات وفيما يتعلق بقاعدة البيانات، وليس بالتطبيق، بما في ذلك نسخها وتخزينها في التخزين الدائم.
  • تم اقتراح الإصدار الثاني من قائمة التحكم بالوصول (ACL)، والذي يسمح لك بالتحكم في الوصول إلى البيانات بناءً على المفاتيح ويسمح لك بتحديد مجموعات مختلفة من قواعد الوصول إلى الأوامر مع القدرة على ربط عدة محددات (مجموعات من الأذونات) لكل مستخدم. يمكن تعريف كل مفتاح بسلطة معينة، على سبيل المثال، يمكنك تقييد الوصول إلى قراءة أو كتابة مجموعة فرعية معينة من المفاتيح فقط.
  • يتم توفير تطبيق مقسم (مجزأ) لنموذج توزيع رسائل النشر والاشتراك الذي يعمل في مجموعة، حيث يتم إرسال رسالة إلى عقدة محددة يتم إرفاق قناة الرسالة بها، وبعد ذلك يتم إعادة توجيه هذه الرسالة إلى العقد المتبقية المضمنة في القشرة. يمكن للعملاء تلقي الرسائل عن طريق الاشتراك في القناة، سواء عن طريق الاتصال بالعقدة الرئيسية أو بالعقد الثانوية للقسم. يتم التحكم باستخدام أوامر SSUBSCRIBE وSUNSUBSCRIBE وSPUBLISH.
  • تمت إضافة دعم لمعالجة الأوامر الفرعية في معظم السياقات.
  • تمت إضافة أوامر جديدة:
    • زمبوب، بزمبوب.
    • إل إم بوب، بي إم بوب.
    • سينتركارد، زينتركارد.
    • نشر، SSUBSCRIBE، SUNSUBSCRIBE، PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • وقت الخبرة، وقت الخبرة.
    • EVAL_RO، EVALSHA_RO، SORT_RO.
    • الوظيفة *، FCALL، FCALL_RO.
    • مستندات الأوامر، قائمة الأوامر.
    • الرسم البياني لوقت الاستجابة.
    • القطع العنقودية، الروابط العنقودية، نطاق DELSLOTSRANGE، النطاق الإضافي للكتلة.
    • عدم إخلاء العميل.
    • تجفيف الرباط الصليبي الأمامي.
  • تم توفير القدرة على معالجة تكوينات متعددة مرة واحدة في مكالمة CONFIG SET/GET واحدة.
  • تمت إضافة الخيارات "-json"، و"-2"، و"-scan"، و"-functions-rdb" إلى الأداة المساعدة redis-cli.
  • افتراضيًا، يتم تعطيل وصول العميل إلى الإعدادات والأوامر التي تؤثر على الأمان (على سبيل المثال، يتم تعطيل أوامر DEBUG وMODULE، ويُحظر تغيير التكوينات باستخدام علامة PROTECTED_CONFIG). لم يعد Redis-cli يصدر أوامر تحتوي على بيانات حساسة إلى ملف محفوظات.
  • تم تقديم جزء كبير من التحسينات بهدف زيادة الأداء وتقليل استهلاك الذاكرة. على سبيل المثال، تم تقليل استهلاك الذاكرة بشكل كبير عند تمكين وضع المجموعة، وعند إجراء عمليات النسخ عند الكتابة، وعند العمل باستخدام التجزئة ومفاتيح zset. منطق محسّن لتدفق البيانات إلى القرص (استدعاء fsync). تم تقليل عدد حزم الشبكة ومكالمات النظام عند إرسال الاستجابات إلى العميل. تم تحسين كفاءة النسخ المتماثل.
  • تم إصلاح الثغرة الأمنية CVE-2022-24735 في بيئة تنفيذ نصوص Lua النصية، مما يسمح لك باستبدال كود Lua الخاص بك وتنفيذه في سياق مستخدم آخر، بما في ذلك مستخدم يتمتع بامتيازات أعلى.
  • تم إصلاح الثغرة الأمنية CVE-2022-24736، والتي تسمح لعملية خادم redis بالتعطل بسبب عدم مرجعية المؤشر NULL. يتم تنفيذ الهجوم من خلال تحميل نصوص Lua المصممة خصيصًا.

المصدر: opennet.ru

إضافة تعليق