Выпуск БД Redis 2.8

После года разработки увидел свет релиз новой стабильной ветки БД Redis 2.8, относящейся к классу NoSQL-систем и развиваемой при содействии компании VMware (следом за первым выпуском 2.8.0 оперативно сформирован корректирующий выпуск 2.8.1). Redis предоставляет похожие на Memcached функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества, а также возможностью выполнения на стороне сервера скриптов-обработчиков на языке Lua. В отличие от Memcached, Redis обеспечивает постоянное хранение данных на диске и гарантирует сохранность БД в случае аварийного завершения работы. Исходные тексты проекта распространяются в рамках лицензии BSD. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl. Имеется поддержка транзакций, позволяющих выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти. Хранение всех данных в оперативной памяти позволяет добиться значительной производительности: при тестировании Redis на сервере с CPU Xeon X3320 2.5 ГГц удалось обеспечить 100 тысяч операций записи и чтения в секунду.

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

Ключевые улучшения, добавленные в Redis 2.8:

Режим частичной ресинхронизации сo slave-серверами (PSYNC), позволяющий избежать передачи полного набора данных от master-сервера к slave-системе после кратковременного прерывания связи; Новые команды: SCAN, HSCAN, SSCAN и ZSCAN для перебора элементов в коллекциях, хэшах, множествах и отсортированных множествах. Формат команд: «SCAN cursor [MATCH pattern] [COUNT count]», через параметр MATCH возможна выборка по маске (например, «scan 52 MATCH key:1*»); Переписана система конфигурации Redis. Добавлена команда «CONFIG REWRITE», позволяющая сохранить в конфигурационном файле изменения, внесённые на лету в процессе использования команды «CONFIG SET»; Поддержка IPv6; Улучшена поддержка скриптинга на стороне сервера. Добавлена команда EVALSHA, аналогичная EVAL за исключением того, что производится выполнение прокэшированных на сервере скриптов по связанному с ними хэшу SHA1 (для помещения скрипта в кэш следует использовать команду SCRIPT LOAD); Улучшен алгоритм расчёта времени истечения жизни ключей; В режиме обмена сообщениями «публикация/подписка» обеспечена поддержка уведомления о поступлении событий об изменениях в пространстве ключей. Например, можно подписаться на события о выполнении команд с определённым ключом, истечении жизни ключей или выполнении над ключами операции LPUSH; Улучшение средств по обеспечению непротиворечивости хранимых данных за счёт возможности приостановить операции записи в случае, если не удалось выявить достаточного числа slave-серверов, укладывающихся в установленные лимиты отзывчивости; Полностью переписан код Redis Sentinel, системы для управления, мониторинга и обеспечена отказоустойчивости БД Redis.

© OpenNet