релиз на СУБД , отнасяща се към класа NoSQL системи. Redis предоставя функции за съхранение на данни в формат ключ/стойност, подобни на Memcached, разширени с поддръжка на структурирани формати на данни, като списъци, хешове и множества, а също така опция за изпълнение на скриптове на езика Lua на страна на сървъра. Кодът на проекта е с лиценз BSD. Допълнителни модули, които предлагат разширени възможности за корпоративни потребители, като RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, от миналата година под проприетарен лиценз RSAL. Развитието на отворените версии на тези модули с лиценз AGPLv3 продължава от проекта .
В контекста на Memcached, Redis предлага перманентно запазване на данни на диск и гарантира запазването на БД в случай на внезапно спиране на системата. Изходният код на проекта се разпространява под лиценз BSD. Клиентските библиотеки са налични за повечето популярни езици, включително Perl, Python, PHP, Java, Ruby и Tcl. Redis поддържа транзакции, позволяващи изпълнение на група команди в един шаг, осигурявайки консистентност и последователност (команди от други заявки не могат да се намесват) при изпълнението на зададен набор от команди и позволява откат на промените в случай на проблеми. Всички данни се кешират изцяло в оперативната памет.
За управление на данните се предоставят команди като инкремент/декремент, стандартни операции върху списъци и множества (обединение, пресичане), преименуване на ключове, множество избирания и функции за сортиране. Поддържат се два режима на съхранение: периодична синхронизация на данните на диск и водене на лог на промените на диска. Във втория случай се гарантира пълна запазваемост на всички промени. Възможна е организация на master-slave репликация на данни на множество сървъри, осъществявана в неблокиращ режим. На разположение е също режима на обмен на съобщения „публикация/абонамент“, при който се създава канал, съобщенията от който се разпространяват на клиентите по абонамент.
Ключови , добавени в Redis 6.0:
- По подразбиране е предложен новият протокол RESP3, но установяването на връзка започва в режим RESP2 и клиентът преминава към новия протокол само ако е използвана новата команда HELLO при съгласуването на връзката. RESP3 позволява директно връщане на сложни типове данни без необходимост от конвертиране на общите масиви от страна на клиента и разделяйки върнатите типове.
- Поддръжка на списъци за контрол на достъпа (), позволяващи точно да се определи какви операции може да извършва клиентът и какви не. ACL също така предоставят възможност за защита от възможни грешки при разработката; например, на обработчика, който извършва само операцията BRPOPLPUSH, може да бъде забранено изпълнението на други операции, и в случай, че в работния код случайно бъде забравен добавен при отстраняването на грешки повик FLUSHALL, това няма да доведе до проблеми. Реализацията на ACL не води до допълнителни накладни разходи и практически не влияе на производителността. За ACL са подготвени интерфейсни модули, които дават възможност за създаване на собствени методи за удостоверяване. За преглед на всички записани нарушения на ACL е предвидена команда "ACL LOG". За генериране на непредсказуеми сесийни ключове е добавена команда "ACL GENPASS", използваща HMAC на базата на SHA256.
- Поддръжка за криптиране на канала за комуникация между клиента и сървъра.
- кеширане на данни от страна на клиента. За съгласуване на кеша от страна на клиента със състоянието на базата данни са налични два режима: 1. Запомняне на сървъра на ключовете, които преди това е запитвал клиентът, за да го информира за загуба на актуалност на записа в клиентския кеш. 2. Механизмът "broadcasting", при който клиентът се абонира за определени префикси на ключовете и сървърът го уведомява в случай на промяна на ключовете, попадащи под тези префикси. Предимството на режима "broadcasting" е, че на сървъра не се използва допълнителна памет за съхранение на картата на кешираните стойности от страна на клиента, а недостатъкът е в увеличаването на броя на предаваните съобщения.
- Брокерът на съобщения Disque, който позволява използването на Redis за обработка на опашки от съобщения, е изваден от основния състав в .
- Добавен е , прокси за клъстера сървъри Redis, позволяващ организирането на работата на клиента с няколко сървъра Redis, като с един екземпляр. Прокси-то може да маршрутизира заявки към възлите с необходимите данни, мултиплексира връзки, пренастройва клъстера в случай на открития на повреди на възлите и извършва заявки, обхващащи няколко възела.
- Значително подобрен API за писане на модули, по същество превърнал Redis в рамка, позволяваща създаването на системи под формата на модулни надстройки.
- Реализиран е режим на репликация, при който файловете RDB веднага се изтриват след като бъдат използвани.
- Подобрен е протоколът за репликация PSYNC2, което дава възможност по-често да се извършва частична ресинхронизация, благодарение на повишените шансове за установяване на разминавания, общи за репликата и мастера.
- Ускорено е зареждането на файловете RDB. В зависимост от съдържанието на файла, ускорението е между 20 и 30%. Значително е ускорено изпълнението на командата INFO при наличие на голям брой свързани клиенти.
- Добавена е нова команда STRALGO с реализация на сложни алгоритми за обработка на низове. В момента е наличен само един алгоритъм LCS (най-дълга обща подпоследователност), който може да бъде полезен при сравнението на РНК и ДНК последователности.
Източник: opennet.ru
