The OpenNET Project / Index page

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

Выпуск БД Redis 3.0

02.04.2015 11:14

После полутора лет разработки увидел свет релиз новой стабильной ветки БД 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-узлов;
  • В команду MIGRATE добавлены новые опции COPY и REPLACE, реализована поддержка кэширования соединений;
  • Добавлена команда CLIENT PAUSE, позволяющая остановить обработку запросов клиента на заданный промежуток времени;
  • Проведена оптимизация производительности команд BITCOUNT и INCR;
  • Переработан режим AOF (Append Only File), в котором удалось снизить задержки при выполнении операций записи на медленных дисках;
  • В команде CONFIG SET обеспечена возможность указания различных величин размерности памяти (например, "CONFIG SET maxmemory 1gb");
  • Немного изменён формат лога, в котором теперь отражаются данные о типе узла (master/slave);
  • Проведён полный рефакторинг организации блокировок и отслеживания выходных буферов.


  1. Главная ссылка к новости (https://groups.google.com/foru...)
  2. OpenNews: Ядро операционной системы стало узким местом при выполнении операций в СУБД Redis
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41958-redis
Ключевые слова: redis, nosql
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (14) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, dr (??), 12:34, 02/04/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Годная БД. Главное применять её по назначению. Надо будет поиграться с кластерным режимом, если реализация качественная - можно будет наконец-то положить в Redis важные данные и не бояться их потери.
     
     
  • 2.4, Аноним (-), 14:32, 02/04/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Норм в нем держать хранилище сессий всякие, правда уже года три приходится держать на нем весьма важные данные - sidekiq использует его для хранения данных в своей очереди и особо проблем не было, но это не означает, что они невозможны.
     
     
  • 3.13, Аноним (-), 08:34, 03/04/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Вот уж точно. Когда нагрузка становится такая что "важные" данные приходится их надежных sql баз переносить в редис. А как иначе? Подумаеш, были важные данные стали не очень важные. Профит от большего количества обслуженых клиентов все покроет :D
     

  • 1.5, ДяДя (?), 16:29, 02/04/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Так и не смог понять зачем оно нужно.
    Довольно медленно работает. В кластере кране ненадёжно.
    При сбоях в сети может терять 50% сообщений. Клиенту говорит, что всё ОК.
    https://aphyr.com/posts/283-call-me-maybe-redis

    Даже на Java быстрее делают :-D
    http://java-is-the-new-c.blogspot.de/2014/12/a-persistent-keyvalue-server-in-

     
     
  • 2.7, bav (ok), 17:54, 02/04/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Если ты прочитаешь внимательно свои ссылки, то jepsen ссылается на sentinel. В трешке как раз новая система поиска консенсуса.
     
  • 2.8, bav (ok), 17:59, 02/04/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и джавошной реализации очень далеко по фичам до редиса.
     
     
  • 3.11, ДяДя (?), 00:51, 03/04/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это просто пример, что подобные системы относительно просты.
    У Редиса почему-то всегда было слабо с производительностью.
     
     
  • 4.12, MaMoHT (?), 05:57, 03/04/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > У Редиса почему-то всегда было слабо с производительностью.

    А можно носом ткнуть в указанных ссылках, что у Редиса слабо с производительностью?

    Я вот изучил указанную ссылку... Там реализована самая примитивная структура, никаких структур наподобие редисовских, ориентация на сингл-коннект... У редиса ориентация на большое количество коннектов. Указанная Java реализация очень сильно просядет на такой конфигурации и ее хваленные сотни тысяч операций в секунд исчезнут в никуда, когда редис их наоборот покажет ...

     
  • 4.17, bav (ok), 12:22, 03/04/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это просто пример, что подобные системы относительно просты.

    Бгг. Пока система ничего не умеет, то да — относительно просты.

     
  • 2.15, Аноним (-), 09:39, 03/04/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    в ссылках редис версии 2013 года...
     

  • 1.6, Аноним (-), 16:30, 02/04/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а правда что оно до сих пор однопоточное внутри? даже memcached многопоточный
     
     
  • 2.9, Аноним (-), 22:03, 02/04/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > а правда что оно до сих пор однопоточное внутри? даже memcached многопоточный

    Правда. Используй несколько инстансов.

     
     
  • 3.10, Аноним (-), 22:59, 02/04/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    замечательно, давайте на машинке запустим 12 инстансов и за одно поделим 64 ГБ на них, очень сильно у меня производительность выросла, а главное как экономно.
     
     
  • 4.14, Аноним (-), 08:39, 03/04/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > замечательно, давайте на машинке запустим 12 инстансов и за одно поделим 64
    > ГБ на них, очень сильно у меня производительность выросла, а главное
    > как экономно.

    Ничего страшного и даже такая архитектура очень полезна, с точки зрения расширяемости. Если что раз и перекинул часть инстансов на другую машину.

     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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