Издаване на Redis 7.0

Публикувана е версията на СУБД 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, което ви позволява да контролирате достъпа до данни въз основа на ключове и ви позволява да дефинирате различни набори от правила за достъп до команди с възможност за обвързване на няколко селектора (набори от разрешения) към всеки потребител. Всеки ключ може да бъде идентифициран със специфични права, например можете да ограничите достъпа само до четене или писане на определено поднабор от ключове.
  • Предоставя се разделена (шардирана) реализация на парадигмата за разпространение на съобщения за публикуване-абонамент, работеща в клъстер, при която съобщение се изпраща до конкретен възел, към който е прикачен канал за съобщения, след което това съобщение се пренасочва към останалите включени възли в фрагмента. Клиентите могат да получават съобщения, като се абонират за канал, както чрез свързване към главния възел, така и към вторичните възли на секцията. Управлението се извършва с помощта на командите SSUBSCRIBE, SUNSUBSCRIBE и SPUBLISH.
  • Добавена е поддръжка за обработка на подкоманди в повечето контексти.
  • Добавени са нови команди:
    • ЗМПОП, БЗМПОП.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • ПУБЛИКУВАЙТЕ, SАБОНИРАЙТЕ, SUNSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • ФУНКЦИЯ *, FCALL, FCALL_RO.
    • КОМАНДНИ ДОКУМЕНТИ, КОМАНДЕН СПИСЪК.
    • ХИСТОГРАМА НА ЗАКЪСНЕНИЕ.
    • КЛЪСТЕРНИ ШАРДОВЕ, КЛЪСТЕРНИ ВРЪЗКИ, КЛЪСТЕРЕН DELSLOTSRANGE, КЛЪСТЕРЕН ADDSLOTSRANGE.
    • КЛИЕНТ БЕЗ ИЗГЛЕЖДАНЕ.
    • ACL DRYRUN.
  • Осигурена е възможност за обработка на множество конфигурации наведнъж в едно повикване 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

Добавяне на нов коментар