The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

24.10.2012 13:44  Релиз БД Redis 2.6

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

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

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

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

  • В Redis встроен интерпретатор Lua и добавлена поддержка написания работающих на стороне сервера скриптов на языке Lua. Для выполнения таких скриптов добавлена команда EVAL. Из скриптов можно обращаться к функциям Redis через использованием методов .call() и .pcall(). Преобразование типов данных Redis и Lua осуществляется автоматически;
  • Проведена большая работа по повышению стабильности и пригодности Redis для промышленного применения. Решены проблемы с отзывчивостью в условии одновременного завершения времени жизни большого числа элементов (использован новый неблокирующий алгоритм чистки устаревших элементов) или при использовании медленных жестких дисков. Добавлены средства самодиагностики для отслеживания внештатных ситуаций. Изменены настройки по молчанию: вторичные slave-системы теперь по умолчанию работают в режиме только для чтения, при выявлении нарушения целостности базы RDB по умолчанию прекращается приём запросов на запись;
  • Удалена подсистема с реализацией виртуальной памяти, позволявшая держать в ОЗУ только ключи, а значения перемещать по мере необходимости в специальный файл подкачки. В качестве причины удаления упоминается низкая эффективность в условиях реального применения;
  • Добавлена возможность определения таймаутов и времени жизни ключей с миллисекундной точностью. Добавлены новые команды PEXPIRE, PSETEX, PTTL, которые оперируют миллисекундами;
  • Сняты определённые в коде ограничения на максимальное число клиентов;
  • Ускорена работа режима записи AOF (append-only-file) за счёт поддержки перезаписи агрегатных типов данных. Расширена семантика для управления AOF-файлами;
  • Оптимизировано потребление памяти при работе с мелкими списками, zip-списками и хэшами, в ситуации когда в них используются небольшие целочисленные значения;
  • Добавлены новые битовые команды BITCOUNT и BITOP;
  • Поддержка задания для клиентов мягких и жестких лимитов на размер выходного буфера, позволяющих использование разные лимиты для разных классов клиентов;
  • Для всех директив redis.conf подготовлены аналогичные опции командной строки;
  • Увеличена производительности записи больших объектов;
  • Реализован встроенный тест памяти (redis-server --test-memory);
  • Добавлены команды INCRBYFLOAT и HINCRBYFLOAT;
  • Из продукта Redis Cluster портированы команды DUMP, RESTORE и MIGRATE;
  • Для RDB-файлов добавлена проверка целостности по контрольным суммам CRC64;
  • Улучшено поведение команды MONITOR, которая теперь выводит параметры команды до начала её исполнения;
  • Добавлена функция "Software Watchdog" для отладки проблем с отзывчивостью БД;
  • Переписана или реструктуризирована значительная часть ядра Redis, что позволило обеспечить формирование Redis Cluster на базе единого кода с Redis. Весь код для работы в режиме кластера временно удалён и будет возвращён в выпуске Redis 3.0, после доработки и стабилизации;
  • Расширены возможности утилиты redis-benchmark, добавлена поддержка запуска избранных тестов и возможность вывода результатов в CSV;
  • В команду SHUTDOWN добавлена поддержка необязательных аргументов "SAVE" и "NOSAVE";
  • Добавлена команда "INFO commandstats" для вывода статистики как часто выполнялись команды и сколько времени было потрачено на их выполнение;
  • Улучшена поддержка систем big endian и *BSD;
  • Расширены возможности системы сборки.


  1. Главная ссылка к новости (http://antirez.com/news/21...)
  2. OpenNews: Проект NewSQL призван решить проблемы, с которыми столкнулся Facebook, используя MySQL
  3. OpenNews: Создатели CouchDB и SQLite представили UnQL, аналог SQL для систем NoSQL
  4. OpenNews: Релиз документо-ориентированной СУБД MongoDB 2.2
  5. OpenNews: Представлена новая NoSQL БД Hibari, созданная для больших хранилищ данных
  6. OpenNews: Увидела свет БД Apache Cassandra 1.1.0
Лицензия: CC-BY
Тип: Программы
Ключевые слова: nosql, redis
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение RSS
 
  • 1.2, imprtat (ok), 15:27, 24/10/2012 [ответить] [показать ветку] [···]    [к модератору]
  • +2 +/
    > Сняты определённые в коде ограничения на максимальное число клиентов;

    сделал дифф со старым конфигом, дефолтный лимит клиентов с 128 увеличили до 10к

    > Из продукта Redis Cluster портированы команды DUMP, RESTORE и MIGRATE;

    круто, делать бекапы методом save + копирование rdb файла как-то не очень круто :)

     
  • 1.8, Sw00p aka Jerom (?), 01:24, 25/10/2012 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    удалось обеспечить 110000 операций записи и 81000 операций чтения в секунду.

    только мне это кажется странным ?

     
     
  • 2.9, Sergey (??), 15:26, 25/10/2012 [^] [ответить]    [к модератору]
  • +1 +/
    Мда не секунду тоже подумал, что запись быстрее чтения, но это же память, и скорее всего это связано с алгоритмическими расходами: запись = "тупо" новый ключ, а чтение = поиск + извлечение. Вот думаю, из-за нахождения/поиска и замедляется.
     
     
  • 3.10, Sw00p aka Jerom (?), 18:08, 25/10/2012 [^] [ответить]    [к модератору]
  • +/
    угу - кстате так и есть, ток я не пойму там сортировки нет ? или она отложенная ?
     
  • 1.11, dr (??), 20:36, 25/10/2012 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    Классно, что Lua поддержу добавили. Уже написал пару полезных скриптиков для построения динамических рейтингов. По сути - это хранимые процедуры, только именование у них странное: 0806b669673e8f026f0203b91bdb22d292527579, 38d78b4774c35b078a2a458873f8c1ab86ebf117 - мало что говорят на первый взгляд, да и на второй.
    Впрочем, в хэше сохранить соотвествие sha1->имя скрипта, загруженного с диска, 2 минут работы. Правда, из redis-cli плохо такие скрипты инспектировать.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2019 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor