Издаване на СУБД Redis 7.0

Публикувано е издание на СУБД Redis 7.0, която принадлежи към класа NoSQL системи. Redis предоставя функции за съхранение на данни във формат ключ/стойност, разширени с поддръжка на структурирани формати на данни, като списъци, хешове и множества, както и възможност за изпълнение на скриптове на сървъра на езика Lua. Кодът на проекта се предоставя под лиценз BSD. Допълнителни модули, предлагащи разширени възможности за корпоративни потребители, като RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, от 2019 г. се предлагат под собственическа лицензия RSAL. Развитието на отворени варианти на тези модули под лиценз AGPLv3 се опита да продължи проектът GoodFORM, който напоследък е в застой.

За разлика от системите за съхранение в оперативната памет, като Memcached, Redis осигурява постоянно съхранение на данни на диска и гарантира запазването на БД в случай на аварийно прекратяване. Изходните кодове на проекта се разпространяват в рамките на лиценз BSD. Клиентските библиотеки са налични за повечето популярни езици, включително Perl, Python, PHP, Java, Ruby и Tcl. Redis поддържа транзакции, които позволяват изпълнението на група команди в един етап, гарантиране на последователност и съгласуваност (командите от други заявки не могат да се намесят) при изпълнението на зададения набор от команди, а в случай на проблеми позволява обратното действие на промените. Всички данни се кешират изцяло в оперативната памет.

За управление на данните са предоставени команди като инкрементиране/декрементиране, стандартни операции над списъци и множества (обединение, пресичане), преименуване на ключове, множество избори и функции за сортиране. Поддържат се два режима на съхранение: периодична синхронизация на данните на диск и водене на лог на промените на диска. При втория случай се гарантира пълна запазеност на всички промени. Възможна е организация на master-slave репликация на данни на няколко сървъри, извършвана в неблокиращ режим. Достъпен е и режимът на обмен на съобщения "публикация/абонамент", при който се създава канал, съобщенията от който се разпространяват на клиентите по абонамент.

Ключови промени в Redis 7.0:

  • Добавена е поддръжка за функции, изпълнявани на сървъра, сървър. За разлика от преди поддържаните скриптове на езика Lua, функциите не са свързани с приложението и са насочени към изпълнението на допълнителна логика, разширяваща възможностите на сървъра. Функциите се обработват неразривно с данните и в контекста на БД, а не на приложението, включително се репликират и запазват в постоянно хранилище.
  • Предложена втора редакция на ACL, която позволява управление на достъпа до данни на база ключове и допуска определяне на различни комплекти правила за достъп до команди с възможност за прикрепяне на множество селектори (комплекти пълномощия) към всеки потребител. Всеки ключ може да бъде идентифициран с определени пълномощия, например, може да се ограничи достъпът само за четене или запис на определено подмножество ключове.
  • Предоставена е работеща в клъстер секционирана (sharded) реализация на парадигмата за разпространение на съобщения по подписка (Publish-Subscribe), при която съобщението се изпраща до определен възел, към който е прикрепен канал за съобщения, след което това съобщение се пренасочва към останалите възли, които влизат в секцията (shard). Клиентите могат да получават съобщения по подписка на канала, както свързвайки се с основния възел, така и с вторичните възли на секцията. Управлението се извършва с помощта на командите SSUBSCRIBE, SUNSUBSCRIBE и SPUBLISH.
  • Добавена е поддръжка за обработка на подкоманди в повечето контексти.
  • Добавени са нови команди:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • COMMAND DOCS, COMMAND LIST.
    • LATENCY HISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • CLIENT NO-EVICT.
    • ACL DRYRUN.
  • Предоставена е възможност за обработка на повече от една конфигурация в едно извикване CONFIG SET/GET.
  • В утилитата redis-cli са добавени опции „—json“, „-2“, „—scan“, „—functions-rdb“.
  • По подразбиране е забранен достъпът на клиентите до настройки и команди, влияещи на сигурността (например, забранени са командите DEBUG и MODULE, забранено е променянето на конфигурации с флаг PROTECTED_CONFIG). В redis-cli е спряно изхода в файл с история на командите, съдържащи конфиденциални данни.
  • Внесени са значителни оптимизации, насочени към повишаване на производителността и намаляване на потреблението на памет. Например, значително е намалено потреблението на памет при активиране на режим клъстер, при извършване на операции copy-on-write и при работа с хешове и ключове zset. Подобрен е логиката за записване на данни на диск (извикване на fsync). Намалено е броят на мрежовите пакети и заявките към системни повиквания при изпращане на отговори на клиента. Повишена е ефективността на репликацията.
  • Отстранена уязвимостта CVE-2022-24735 в средата за изпълнение на Lua-скриптове, която позволява подмяна на Lua-код и неговото изпълнение в контекста на друг потребител, включително такъв с по-високи привилегии.
  • Отстранена уязвимостта CVE-2022-24736, която позволява аварийно прекратяване на процеса redis-server заради разименоване на нулев указател. Атаката се извършва чрез зареждане на специално оформени Lua-скриптове.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster