Представлен релиз новой стабильной ветки БД Redis 2.4, относящейся к классу NoSQL-систем и развиваемой при содействии компании VMWare. Redis предоставляет похожие на Memcached функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества. В отличие от Memcached, Redis обеспечивает постоянное хранение данных на диске и гарантирует сохранность БД в случае аварийного завершения работы. Исходные тексты проекта распространяются в рамках лицензии BSD. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl. Почти сразу после Redis 2.4.0 был выпущен корректирующий релиз 2.4.1 с исправлением нескольких проблем.

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

Имеется поддержка транзакций, позволяющих выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти. Хранение всех данных в оперативной памяти позволяет добиться значительной производительности: при тестировании Redis на сервере с CPU Xeon X3320 2.5 ГГц удалось обеспечить 110000 операций записи и 81000 операций чтения в секунду.

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

  • За счёт использования специального кодирования при работе с отсортированными списками, удалось заметно понизить потребление памяти при использовании небольших упорядоченных списков;
  • Увеличена скорость загрузки и сохранения для списков, включающих уже сериализованные данные. Например, исключено выполнение дублирующей сериализации для использующих специальное кодирование типов ziplist, zipmap и intset;
  • Возможность одновременного указания нескольких значений для почти всех команд, связанных с записью: SADD, HDEL, SREM, ZREM, ZADD и L/RPUSH. Например, "HDEL hash field2 field3 field3..." позволяет за раз удалить несколько элементов;
  • Поддержка библиотеки Jemalloc с реализацией высоко эффективных функций распределения памяти, которая теперь используется по умолчанию при работе на платформе Linux. Jemalloc позволяет заметно снизить уровень фрагментации памяти;
  • Сокращено потребление памяти в процессе записи данных за счёт сокращения числа операций дублирующего копирования (copy-on-write) при работе с хранилищем RDB и логом AOF;
  • Расширение числа информационных полей, выводимых при выполнении команды INFO. Например, дополнительно отображается пиковое потребление и пиковая фрагментация памяти, время форка.
  • Новая отладочная команда OBJECT для анализа объектов. Команда позволяет изучить внутренности объектов, ассоциированных с ключами, понять используется ли дополнительное кодирование для ключей. При использовании Redis в качестве кэша выдаваемая командой OBJECT информация может быть полезна для реализации механизма вытеснения ключей, работающего на уровне приложения;
  • Новая отладочная команда CLIENT для анализа клиентов. Команда позволяет посмотреть список клиентов и при необходимости принудительно разорвать соединение;
  • Поддержка выполнения соединения от slave к master в неблокирующем режиме (репликация реализована в неблокирующем режиме изначально, но выполнение операции connect могло приводить к блокировке);
  • Улучшена обработка соединений в командной оболочке redis-cli, например, теперь производится реконнект после обрыва связи. Добавлена поддержка указания цифровых префиксов перед командами, через которые передаётся число повторов. Например, "4 ping" приведёт к выполнению команды ping четыре раза подряд. В сочетании с утилитой grep теперь возможен мониторинг отдельных параметров INFO, например: "./redis-cli -r 10000 -i 1 info | grep used_memory_human";
  • Расширены возможности команды redis-benchmark, которая теперь может измерять производительность произвольной команды, заданной пользователем;
  • При выполнении утилиты make, вывод теперь выделяется разными цветами, что упрощает восприятие ошибок и предупреждений на этапе сборки;
  • Подсистема с реализацией виртуальной памяти признана устаревшей. В будущих версиях код VM будет удалён, как не эффективный и не оправдавший надежды. Механизм VM, позволял держать в ОЗУ только ключи, а значения перемещать по мере необходимости в специальный файл подкачки.
  • Многочисленные оптимизации производительности и устранение ошибок;
  • Подготовлен порт Redis для платформы Windows;


Источник: http://www.opennet.ru/opennews/art.shtml?num=32081