Redis 7.4 объявлен как первая версия, распространяемая с новыми условиями лицензирования — вместо ранее применявшейся лицензии BSD код теперь доступен под проприетарными лицензиями лицензиями RSALv2 (Redis Source Available License v2) и SSPLv1 (Server Side Public License v1). Желающие продолжить использование кода под лицензией BSD могут воспользоваться проектами Valkey (форк, развиваемый при участии Amazon, Google, Oracle, Ericsson и Snap), Redict (форк от автора пользовательской оболочки Sway и языка Hare), Garnet (СУБД от Microsoft, совместимая с Redis) или
KeyDB (высокопроизводительный форк Redis 5 от Snapchat).
Лицензии SSPL и RSAL приводят к дискриминации отдельных категорий пользователей, что не позволяет считать их открытыми или свободными. По своим целям обе лицензии походят друг на друга, а отличия сводится к тому, что лицензия SSPL основана на копилефт лицензии AGPLv3, а лицензия RSAL основана на пермиссивной лицензии BSD. Лицензия RSAL позволяет использовать, изменять, распространять и интегрировать код в приложения, за исключением случаев, когда эти приложения является коммерческими или используются для предоставления управляемых платных сервисов). Лицензия SSPL дополнительно содержит требование поставки под той же лицензией не только кода самого приложения, но и исходных текстов всех компонентов, вовлечённых в предоставление облачного сервиса.
СУБД Redis поддерживает транзакции, позволяющие выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl.
Для управления данными предоставляются такие команды, как инкремент/декремент, стандартные операции над списками и множествами (объединение, пересечение), переименование ключей, множественные выборки и функции сортировки. Поддерживается два режима хранения: периодическая синхронизация данных на диск и ведение на диске лога изменений. Во втором случае гарантируется полная сохранность всех изменений. Возможна организация master-slave репликации данных на несколько серверов, осуществляемая в неблокирующем режиме. Доступен также режим обмена сообщениями «публикация/подписка», при котором создаётся канал, сообщения из которого распространяются клиентам по подписке.
Ключевые изменения в функциональности Redis 7.4:
- Добавлена возможность ограничения времени жизни отдельных полей в хэшах, структурах для хранения сгруппированных коллекций записей в формате ключ-значение. В отличие от назначения времени жизни ключу предложенное изменение позволяет выставлять не только общее время жизни для всех связанных полей, но и индивидуальные значения времени жизни отельных полей, что может использоваться, например, для обеспечения более короткого жизненного цикла токенов аутентификации, по сравнению с другими данными сеанса.
- Предложены новые типы данных bfloat16 и float16, оптимизированные для использование в приложениях машинного обучения и позволяющие сократить потребление памяти по сравнению с ранее доступными типами float32 и float64. При использовании в хэшах новые типы дают возможность сократить потребление памяти в векторных БД на 47%, уменьшить задержки извлечения данных на 59% и сократить время создания индексов на 58% по сравнению с типом float64.
- Упрощено использование вторичных индексов. При запросе информации из вторичных индексов теперь можно не экранировать отдельные спецсимволы, такие как «@» и «.», а использовать двойные кавычки для обрамления порции данных. Также значительно улучшено индексирование пустых и отсутствующих полей — для создания индексов и формирования запросов, учитывающих наличие полей, предложены новое ключевое слово INDEXMISSING и функция ismissing(). Добавлены новые операторы INTERSECT и DISJOINT для упрощения поиска геопространственных данных. Добавлены возможности для анализа потребления памяти индексом.
- Добавлена поддержка фильтров для отсеивания элементов в добавляемых наборах данных, например, при периодической загрузке в БД данных от датчиков можно добавить фильтр для игнорирования значений, отличие времени которых от предыдущего значения меньше определённого порогового значения.
- Прекращена поддержка триггеров и функций на языке JavaScript, предложенных в прошлом выпуске.
Источник: http://www.opennet.ru/opennews/art.shtml?num=61632