Redis 7.0 DBMSning chiqarilishi

NoSQL tizimlari sinfiga kiruvchi Redis 7.0 DBMS ning chiqarilishi chop etildi. Redis ro'yxatlar, xeshlar va to'plamlar kabi tuzilgan ma'lumotlar formatlarini qo'llab-quvvatlash, shuningdek Lua'da server tomonidagi skript ishlov beruvchilarini ishga tushirish qobiliyati bilan takomillashtirilgan kalit/qiymat ma'lumotlarini saqlash funktsiyalarini taqdim etadi. Loyiha kodi BSD litsenziyasi ostida taqdim etiladi. RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom kabi korporativ foydalanuvchilar uchun ilg‘or imkoniyatlarni taklif qiluvchi qo‘shimcha modullar 2019-yildan beri xususiy RSAL litsenziyasi ostida yetkazib berilgan. Yaqinda to'xtab qolgan GoodFORM loyihasi AGPLv3 litsenziyasi ostida ushbu modullarning ochiq versiyalarini ishlab chiqishni davom ettirishga harakat qildi.

Memcached kabi xotiradagi saqlash tizimlaridan farqli o'laroq, Redis ma'lumotlarning doimiy ravishda diskda saqlanishini ta'minlaydi va avariya sodir bo'lgan taqdirda ma'lumotlar bazasi o'zgarmasligini ta'minlaydi. Loyihaning manba kodi BSD litsenziyasi ostida tarqatiladi. Mijoz kutubxonalari eng mashhur tillar, jumladan Perl, Python, PHP, Java, Ruby va Tcl uchun mavjud. Redis bir bosqichda buyruqlar guruhini bajarishga imkon beruvchi tranzaktsiyalarni qo'llab-quvvatlaydi, berilgan buyruqlar to'plamining bajarilishida izchillik va izchillikni ta'minlaydi (boshqa so'rovlardan olingan buyruqlar xalaqit bermaydi) va muammolar yuzaga kelganda, orqaga qaytishga imkon beradi. o'zgarishlar. Barcha ma'lumotlar RAMda to'liq keshlangan.

Ma'lumotlarni boshqarish uchun oshirish/kamaytirish, standart ro'yxat va to'plam operatsiyalari (birlashma, kesishish), kalitlarning nomini o'zgartirish, bir nechta tanlash va saralash funktsiyalari kabi buyruqlar taqdim etiladi. Ikkita saqlash rejimi qo'llab-quvvatlanadi: ma'lumotlarni diskka davriy sinxronlashtirish va diskdagi o'zgarishlar jurnalini saqlash. Ikkinchi holda, barcha o'zgarishlarning to'liq xavfsizligi kafolatlanadi. Bloklanmagan rejimda amalga oshiriladigan bir nechta serverlarga master-slave ma'lumotlar replikatsiyasini tashkil qilish mumkin. "Nashr qilish/obuna bo'lish" xabar almashish rejimi ham mavjud bo'lib, unda kanal yaratiladi, xabarlar obuna bo'yicha mijozlarga tarqatiladi.

Redis 7.0 dagi asosiy o'zgarishlar:

  • Server tomonidagi funktsiyalar uchun qo'shimcha qo'llab-quvvatlash. Lua tilida ilgari qo'llab-quvvatlanadigan skriptlardan farqli o'laroq, funktsiyalar dasturga bog'lanmagan va server imkoniyatlarini kengaytiradigan qo'shimcha mantiqni amalga oshirishga qaratilgan. Funktsiyalar ilovaga emas, balki ma'lumotlar bazasiga nisbatan ajralmas tarzda qayta ishlanadi, shu jumladan takrorlanadi va doimiy xotirada saqlanadi.
  • ACL ning ikkinchi nashri taklif qilindi, bu sizga kalitlar asosida ma'lumotlarga kirishni boshqarish imkonini beradi va har bir foydalanuvchi uchun bir nechta selektorlarni (ruxsatlar to'plamini) bog'lash imkoniyati bilan buyruqlarga kirish uchun turli xil qoidalar to'plamini aniqlash imkonini beradi. Har bir kalit ma'lum bir vakolat bilan aniqlanishi mumkin, masalan, kirishni faqat ma'lum bir kichik to'plamni o'qish yoki yozishni cheklashingiz mumkin.
  • Klasterda ishlaydigan nashr etish-obuna bo'lish xabarlarini tarqatish paradigmasining bo'lingan (parchalangan) amalga oshirilishi ta'minlangan, unda xabar xabar kanali biriktirilgan ma'lum bir tugunga yuboriladi, shundan so'ng bu xabar qolgan tugunlarga yo'naltiriladi. parchada. Mijozlar kanalga obuna bo'lish orqali, ham asosiy tugunga, ham bo'limning ikkilamchi tugunlariga ulanish orqali xabarlarni qabul qilishlari mumkin. Boshqarish SUNSCRIBE, SUNSUBSCRIBE va SPUBLISH buyruqlari yordamida amalga oshiriladi.
  • Ko'pgina kontekstlarda kichik buyruqlarni qayta ishlash uchun qo'shimcha yordam.
  • Yangi buyruqlar qo'shildi:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • YARATING, OBUNA BO'LING, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • BUYRUQ Xujjatlari, BUYRUQLAR RO'YXATI.
    • KECHIRGANLIK HISTOGRAMI.
    • KLASTER SHARDS, KLASTER HALOQALARI, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • MIJOLAR KO'CHIRILMAYDI.
    • ACL DRYRUN.
  • Bitta CONFIG SET/GET qo'ng'irog'ida bir vaqtning o'zida bir nechta konfiguratsiyalarni qayta ishlash imkoniyati taqdim etilgan.
  • Redis-cli yordam dasturiga "-json", "-2", "-scan", "-functions-rdb" opsiyalari qo'shildi.
  • Odatiy bo'lib, mijozning xavfsizlikka ta'sir qiluvchi sozlamalar va buyruqlarga kirishi o'chirilgan (masalan, DEBUG va MODULE buyruqlari o'chirilgan, PROTECTED_CONFIG bayrog'i bilan konfiguratsiyalarni o'zgartirish taqiqlangan). Redis-cli endi maxfiy ma'lumotlarni o'z ichiga olgan buyruqlarni tarix fayliga chiqarmaydi.
  • Optimallashtirishning katta qismi unumdorlikni oshirish va xotira sarfini kamaytirishga qaratilgan. Masalan, klaster rejimini yoqishda, yozishda nusxa ko'chirish operatsiyalarini bajarishda va xeshlar va zset tugmachalari bilan ishlashda xotira sarfi sezilarli darajada kamaydi. Diskka ma'lumotlarni o'chirish uchun mantiqiy takomillashtirilgan (fsync chaqiruvi). Mijozga javob yuborishda tarmoq paketlari va tizim qo'ng'iroqlari soni kamaydi. Replikatsiya samaradorligi yaxshilandi.
  • Lua skriptlarini bajarish muhitidagi CVE-2022-24735 zaifligi tuzatildi, bu sizga o'z Lua kodingizni almashtirish va uni boshqa foydalanuvchi, jumladan, yuqori imtiyozlarga ega bo'lgan foydalanuvchi kontekstida bajarishga erishish imkonini beradi.
  • Ruxsat etilgan zaiflik CVE-2022-24736, bu redis-server jarayonining NULL ko'rsatgichga murojaat qilishi sababli ishdan chiqishiga imkon beradi. Hujum maxsus ishlab chiqilgan Lua skriptlarini yuklash orqali amalga oshiriladi.

Manba: opennet.ru

a Izoh qo'shish