Релиз СУБД Redis 8.2

Состоялся выпуск СУБД Redis 8.2. Решение относится к классу NoSQL-систем. Проект Redis предоставляет функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества, а также возможностью выполнения на стороне сервера скриптов-обработчиков на языке Lua. Исходный код решения написан на язык C и опубликован на GitHub под лицензией AGPLv3.

По информации OpenNET, СУБД Redis поддерживает транзакции, позволяющие выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl.

Для управления данными в Redis предоставляются такие команды, как инкремент/декремент, стандартные операции над списками и множествами (объединение, пересечение), переименование ключей, множественные выборки и функции сортировки.

В Redis поддерживается два режима хранения: периодическая синхронизация данных на диск и ведение на диске лога изменений. Во втором случае гарантируется полная сохранность всех изменений. Возможна организация master‑slave репликации данных на несколько серверов, осуществляемая в неблокирующем режиме. Доступен также режим обмена сообщениями «публикация/подписка», при котором создаётся канал, сообщения из которого распространяются клиентам по подписке.

Основные изменения и дополнения в Redis 8.2:

проведена оптимизация более 70 команд, которые стали работать быстрее, чем в Redis 8.0. Например, команда BITCOUNT стала быстрее на 35%, а команды для операции со списками LINSERT, LREM и LPOS — быстрее на 25%. 17 из оптимизированных команд стали быстрее минимум на 5%, а 52 — минимум на 2%;

проведены оптимизации кода обработки одновременных операций и многопоточного ввода/вывода, позволившие на 49% увеличить число обрабатываемых операций в секунду в тестах с 8 потоками ввода/вывода при распределении нагрузки в 20% запросов на запись и 80% на чтение. На одном сервере удалось превысить рубеж в 1 млн обрабатываемых операций в секунду;

фундаментально изменён метод хранения данных в формате ключ/значение — для хранения теперь используется унифицированная структура kvobj, позволяющая упаковывать имя ключа, короткое значение и время жизни в одном блоке выделяемой памяти и обойтись одной ссылкой на эту структуру в хэш таблицах, вместо отдельных ссылок на ключи, данные и TTL. При хранении коротких строковых значений новый метод хранение позволил сократить потребление памяти на 25–37%;

проведена оптимизация хранения данных в формате JSON, позволившая снизить потребление памяти на 25–67% при хранении целых чисел и чисел с плавающей запятой;

в механизм Streams, применяемый для обработки и хранения потока сообщений, добавлены новые команды XACKDEL и XDELEX, упрощающие работу с потоками, к которым подключено несколько получателей (consumer groups). Команды решают задачу удаления сообщения только после того, как его получение будет подтверждено всеми обработчиками;

в команду BITOP, предназначенную для выполнение битовых операций, добавлены новые логические операторы DIFF, DIFF1, ANDOR и ONE;

добавлен новый тип индексов векторов SVS‑VAMANA, поддерживающий сжатие векторов;

добавлены новые метрики: нагрузка в разрезе отдельных слотов и распределение размеров ключей для базовых типов данных.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии