Redis 7.0, מערכת ניהול מסדי נתונים NoSQL, שוחררה. Redis מספקת יכולות אחסון מפתחות/ערכים, שהורחבו לתמיכה בפורמטים מובנים של נתונים כגון רשימות, גיבובים וקבוצות, כמו גם את היכולת להריץ סקריפטים של מטפלי Lua בצד השרת. קוד הפרויקט מורשה תחת רישיון BSD. מודולים נוספים המציעים יכולות מתקדמות למשתמשים ארגוניים, כגון RediSearch, RedisGraph, RedisJSON, RedisML ו-RedisBloom, מורשים תחת רישיון RSAL קנייני מאז 2019. פרויקט GoodFORM, אשר תקוע, ניסה להמשיך בפיתוח גרסאות קוד פתוח של מודולים אלה תחת רישיון AGPLv3.
בניגוד למערכות אחסון בזיכרון כמו Memcached, Redis מאחסנת נתונים באופן עקבי בדיסק ומבטיחה את שלמות מסד הנתונים במקרה של קריסה. קוד המקור של הפרויקט מופץ תחת רישיון BSD. ספריות לקוח זמינות עבור רוב השפות הפופולריות, כולל Perl, Python, PHP, Java, Ruby ו-Tcl. Redis תומכת בטרנזקציות, המאפשרות לבצע קבוצת פקודות בשלב אחד, מה שמבטיח עקביות וביצוע סדרתי (פקודות מבקשות אחרות אינן יכולות להפריע) של קבוצת פקודות נתונה, ומאפשרת ביטול שינויים במקרה של בעיה. כל הנתונים מאוחסנים במטמון מלא ב-RAM.
פקודות ניהול נתונים כוללות הגדלה/הקטנה, פעולות רשימה וקבוצה סטנדרטיות (איחוד, חיתוך), שינוי שם של מקשים, בחירות מרובות ופונקציות מיון. שני מצבי אחסון נתמכים: סנכרון נתונים תקופתי לדיסק ותחזוקת יומן שינויים בדיסק. האחרון מבטיח שמירה מלאה של כל השינויים. שכפול נתונים Master-Slave על פני מספר מופעים אפשרי גם כן. שרתים, מתבצע במצב ללא חסימה. קיים גם מצב פרסום/הרשמה, היוצר ערוץ שממנו מופצות הודעות ללקוחות באמצעות הרשמה.
שינויים עיקריים ב-Redis 7.0:
- נוספה תמיכה בפונקציות שבוצעו בצד שרתבניגוד לסקריפטים של Lua שנתמכו בעבר, פונקציות אינן ספציפיות ליישום ונועדו ליישם לוגיקה נוספת המרחיבה את יכולות השרת. פונקציות מעובדות בצורה חלקה עם הנתונים וקשורות למסד הנתונים, לא ליישום, ומשוכפלות ומאוחסנות באחסון מתמשך.
- הוצעה גרסה שנייה של ACL, המאפשרת בקרת גישה לנתונים מבוססת מפתחות והגדרה של קבוצות שונות של כללי גישה לפקודות עם היכולת לקשור מספר בוררים (קבוצות הרשאות) לכל משתמש. כל מפתח יכול להיות משויך להרשאה ספציפית; לדוגמה, ניתן להגביל את הגישה לגישה לקריאה בלבד או לכתיבה בלבד לתת-קבוצה ספציפית של מפתחות.
- מסופק יישום משורטט כלל-אשכולי של פרדיגמת הפצת ההודעות Publish-Subscribe. פרדיגמה זו מאפשרת שליחת הודעה לצומת ספציפי המחובר לערוץ הודעות, ולאחר מכן היא מועברת לצמתים הנותרים בתוך ה-shard. לקוחות יכולים להירשם לערוץ על ידי התחברות הן לצומת הראשי והן לצמתים המשניים בתוך ה-shard. הבקרה ניתנת באמצעות הפקודות SSUBSCRIBE, SUNSUBSCRIBE ו-SPUBLISH.
- נוספה תמיכה בעיבוד פקודות משנה ברוב ההקשרים.
- נוספו פקודות חדשות:
- זמפופ, ביזמפופ.
- למפופ, בלמפופ.
- סינטרקארד, זינטרקארד.
- SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCANNELS/SHARDNUMSUB.
- זמן תפוגה, זמן תפוגה.
- EVAL_RO, EVALSHA_RO, SORT_RO.
- פונקציה *, FCALL, FCALL_RO.
- מסמכי פקודות, רשימת פקודות.
- היסטוגרמה של זמן השהייה.
- רסיסי אשכולות, קישורי אשכולות, טווח סלוטים של אשכולות, טווח סלוטים של תוספות אשכולות.
- לקוח ללא פינוי.
- ריצה יבשה של הצדדים הרצועים הצדדיים.
- סופקה היכולת לעבד מספר תצורות בקריאה אחת של CONFIG SET/GET.
- האפשרויות "--json", "-2", "--scan", "--functions-rdb" נוספו לכלי redis-cli.
- כברירת מחדל, גישת הלקוח להגדרות ופקודות רגישות לאבטחה מושבתת (לדוגמה, הפקודות DEBUG ו-MODULE מושבתות, ושינוי תצורות באמצעות הדגל PROTECTED_CONFIG אסור). redis-cli כבר לא מוציא פקודות המכילות נתונים רגישים לקובץ ההיסטוריה.
- מספר משמעותי של אופטימיזציות יושמו כדי לשפר את הביצועים ולהפחית את צריכת הזיכרון. לדוגמה, צריכת הזיכרון צומצמה משמעותית בעת הפעלת מצב אשכול, ביצוע פעולות העתקה-בכתיבה ועבודה עם גיבוב ומפתחות zset. לוגיקת ניקוי הנתונים (fsync calls) שופרה. מספר חבילות הרשת וקריאות המערכת בעת שליחת תגובות ללקוח הופחת. יעילות השכפול שופרה.
- תוקנה פגיעות CVE-2022-24735 בסביבת ביצוע סקריפט Lua, המאפשרת החלפה של קוד Lua והפעלתו בהקשר של משתמש אחר, כולל משתמש בעל הרשאות גבוהות יותר.
- CVE-2022-24736, פגיעות שעלולה לגרום לקריסת תהליך redis-server עקב ביטול הפניה של מצביע null, תוקנה. ההתקפה מבוצעת על ידי טעינת סקריפטים של Lua בעלי מבנה מיוחד.
מקור: OpenNet.ru
