Выпуск БД Redis 3.0

После полутора лет разработки увидел свет релиз новой стабильной ветки БД Redis 3.0, относящейся к классу NoSQL-систем и развиваемой при содействии компании VMware. Redis предоставляет похожие на Memcached функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества, а также возможностью выполнения на стороне сервера скриптов-обработчиков на языке Lua. В отличие от Memcached, Redis обеспечивает постоянное хранение данных на диске и гарантирует сохранность БД в случае аварийного завершения работы. Исходные тексты проекта распространяются в рамках лицензии BSD. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl. Имеется поддержка транзакций, позволяющих выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти. Для управления данными предоставляются такие команды, как инкремент/декремент, стандартные операции над списками и множествами (объединение, пересечение), переименование ключей, множественные выборки и функции сортировки. Поддерживается два режима хранения: периодическая синхронизация данных на диск и ведение на диске лога изменений. Во втором случае гарантируется полная сохранность всех изменений. Возможна организация master-slave репликации данных на несколько серверов, осуществляемая в неблокирующем режиме. Доступен также режим обмена сообщениями «публикация/подписка», при котором создаётся канал, сообщения из которого распространяются клиентам по подписке.

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

Интегрирован Redis Cluster для создания распределённых хранилищ. Redis Cluster позволяет развернуть конфигурацию в которой данные автоматически распределяются между несколькими узами Redis. Возможно создание отказоустойчивых конфигураций, при которых данные дублируются на разных узлах и выход одного узла из строя не приводит к остановке работы; Новый тип кодирования объектов «embedded string», при котором более эффективно используется кэш; Значительно улучшен алгоритм LRU, применяемый при вытеснении неиспользуемых ключей; Добавлена команда WAIT для ожидания передачи записываемого блока на заданное число slave-узлов; В команду MIGARTE добавлены новые опции COPY и REPLACE, реализована поддержка кэширования соединений; Добавлена команда CLIENT PAUSE, позволяющая остановить обработку запросов клиента на заданный промежуток времени; Проведена оптимизация производительности команд BITCOUNT и INCR; Переработан режим AOF (Append Only File), в котором удалось снизить задержки при выполнении операций записи на медленных дисках; В команде CONFIG SET обеспечена возможность указания различных величин размерности памяти (например, «CONFIG SET maxmemory 1gb»); Немного изменён формат лога, в котором теперь отражаются данные о типе узла (master/slave); Проведён полный рефакторинг организации блокировок и отслеживания выходных буферов.

© OpenNet