The OpenNET Project / Index page

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

Релиз БД Redis 2.2

24.02.2011 12:58

Сальвадор Санфилиппо (Salvatore Sanfilippo), работающий в компании VMWare, представил новую стабильную ветку БД Redis 2.2. Redis относится к классу NoSQL-систем, предоставляя похожие на Memcached функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества. Для управления данными поддерживаются такие команды, как инкремент/декремент, стандартные операции над списками и множествами (объединение, пересечение), переименование ключей, множественные выборки и функции сортировки. Исходные тексты проекта распространяются в рамках лицензии BSD. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl.

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

Хранение всех данных в оперативной памяти позволяет добиться значительной производительности: при тестировании Redis на сервере с CPU Xeon X3320 2.5 ГГц удалось обеспечить 110000 операций записи и 81000 операций чтения в секунду. Для случаев когда данных слишком много, предусмотрен специальный режим, позволяющий держать в ОЗУ только ключи, а значения перемещать по мере необходимости в специальный файл подкачки. Также имеется поддержка транзакций, позволяющих выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения.

Из наиболее важных отличий ветки 2.2 от прошлых выпусков можно отметить:

  • Проведена большая работа по оптимизации потребления памяти, результаты особенно заметны при хранении специально кодируемых типов данных, списков и множеств;
  • Частично переписан код по организации работы виртуальной памяти, обеспечивающей вытеснение части данных из ОЗУ на диск. Изменение позволило заметно увеличить эффективность расходования памяти;
  • Значительно расширены возможности клиента для выполнения операций в режиме командной строки - redis-cli: добавлена поддержка автодополнения ввода при нажатии табуляции, интегрирована встроенная справка по командам Redis, добавлена возможность вывода в сыром формате (raw);
  • С целью повышения эффективности, переписаны компоненты, обеспечивающие функции сетевого взаимодействия. Например, команды, подобные LRANGE, теперь выполняются как минимум в 10 раз быстрее, чем раньше;
  • Реализован неблокирующий режим репликации данных на стороне основного и подчиненного (slave) серверов. Например, slave-сервер можно настроить так, что в случае отключения канала связи он будет продолжать работу со старым набором данных или выводить ошибку , а после восстановления соединения все изменения будут синхронизированы;
  • Поддержка CAS-транзакций (Check-and-set) и новой команды WATCH, позволяющих обеспечить запись значений при истечении времени жизни ключей;
  • Новые правила вытеснения записей в ситуации исчерпания свободной памяти: предоставлена возможность выбора между LRU, вытеснением старейших значений TTL и другими алгоритмами;
  • Новые функции для обработки строк как массивов: SETBIT, GETBIT, SETRANGE, GETRANGE и STRLEN;
  • Добавлена поддержка соединения с Redis-сервером через доменный UNIX-сокет (Unix domain socket);
  • Новые функции для работы со списками: LINSERT, LPUSHX, RPUSHX;
  • Расширен вывод информации, отображаемой по команде INFO;
  • Оптимизировано потребление памяти при хранении отсортированных списков;
  • Загрузка дампов .rdb / AOF при запуске теперь возможна в неблокирующем режиме;
  • Добавлена новая библиотека для обращения к Redis из программ на языке Си - hiredis.

Летом планируется выпустить Redis 3.0, который будет поддерживать организацию распределенных на несколько машин хранилищ. Сейчас Redis поддерживает только полную репликацию данных и предоставляет базовые функции для упрощения организации шардинга на стороне клиента (разбиение БД на несколько серверов, отталкиваясь от наименований ключей).

  1. Главная ссылка к новости (http://twitter.com/antirez/sta...)
  2. OpenNews: Представлен релиз БД Redis 2.0.0
  3. OpenNews: Представлена новая NoSQL БД Hibari, созданная для больших хранилищ данных
  4. OpenNews: Релиз документо-ориентированной СУБД MongoDB 1.6
  5. OpenNews: Релиз БД Apache Cassandra 0.7
  6. OpenNews: Ведущие поставщики NoSQL-баз CouchOne (CouchDB) и Membase объявили о слиянии
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/29702-redis
Ключевые слова: redis, nosql, database, memcahced
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (31) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, _v_s_g_ (?), 14:20, 24/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    лучше чем couchdb, кто знает?
     
     
  • 2.3, ученик_йоды (?), 14:29, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Разные решают задачи они
     
     
  • 3.21, _v_s_g_ (?), 16:04, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Какие именно разные такие задачи?
     
     
  • 4.24, Аноним (-), 17:00, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Какие именно разные такие задачи?

    Скорость против надёжности.

     
     
  • 5.25, Аноним (-), 17:02, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> Какие именно разные такие задачи?
    > Скорость против надёжности.

    Фу блин не туда ответил :)))

     

  • 1.2, Аноним (-), 14:28, 24/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Чем лучше SQL-подобных БД ?
     
     
  • 2.4, Аноним (-), 14:44, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скоростью. RDBMS не в состоянии работать в темпе "десятки тысяч транзакций в секунду". Ни на каком железе.
     
     
  • 3.6, Игнат (?), 15:10, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Скоростью. RDBMS не в состоянии работать в темпе "десятки тысяч транзакций в
    > секунду". Ни на каком железе.

    А чем тогда SQL ные лучше этого Redisa?

     
     
  • 4.15, Аноним (-), 15:36, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > А чем тогда SQL ные лучше этого Redisa?

    Транзакциями, реляционностью.

     
  • 4.22, _v_s_g_ (?), 16:05, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Не такие тормозные на вьюхах, например!
     
  • 3.10, Anonymousmouse (?), 15:22, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Вы есть говорить чушь, уважаемый. Вы просто не умеете их готовить.

    Вот человек умеет:
    http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for
    Даже до перехода на NoSQL модель работы с MySQL/InnoDB он имел более ста тысяч операций в секунду, обратите внимание. После - все семьсот тысяч. Сравните с цифрами той же обсуждаемой редиски.

    Могу также расказать, что цифры в 50К запросов в секунду вполне достижимы и с MySQL, и с PostgreSQL, даже на довольно дешёвом железе, типа стандартного домашнего компьютера за 15К деревянных. И памяти есть будет меньше, чем Redis, между прочим.

     
     
  • 4.17, Аноним (-), 15:47, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Могу также расказать, что цифры в 50К запросов в секунду вполне достижимы
    > и с MySQL, и с PostgreSQL, даже на довольно дешёвом железе,
    > типа стандартного домашнего компьютера за 15К деревянных. И памяти есть будет
    > меньше, чем Redis, между прочим.

    Транзакций или запросов? Количество запросов никому не интересно, интересуют транзакции. А пишущая транзакция - это обязательная синхронизация хотя бы одного сектора с диском в её конце.

    Жёсткий диск не может делать sync быстрее чем крутится его блин. Это просто невозможно физически, головка диска пролетает над сектором всего лишь 7200 / 60 = 120 раз в секунду.

    А если Вы будете делать нормальный RAID, то в стоимость стандартного домашнего компьютера за 15К деревянных Вы не уложитесь.

     
     
  • 5.18, Anonymousmouse (?), 15:53, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Транзакций или запросов? Количество запросов никому не интересно, интересуют транзакции.
    > А пишущая транзакция - это обязательная синхронизация хотя бы одного сектора
    > с диском в её конце.

    Redis тоже не мгновенно на диск данные сбрасывает.
    Смысл поста был в том, что если вам очень хочется использовать нормальную СУБД в том стиле, в котором обычно используют NoSQL, то это возможно, и скорости будут вполне сравнимые. И просто "скоростью" не является достаточным ответом на вопрос "Чем лучше SQL-подобных БД?".

     
     
  • 6.23, Аноним (-), 16:10, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Redis тоже не мгновенно на диск данные сбрасывает.

    Разве у Redis это не асинхронно происходит? У него же нет транзакций в понимании реляционных СУБД, поэтому ему не нужно блокировать работу в ожидании ответа диска, он просто пишет в память, отсюда высокая скорость и отсутствие гарантий целостности при аварии.

    Если же Вы включите журнал в режиме "fsync every time a new command is appended to the AOF. Very very slow, very safe.", то получите теже 120 sync'ов в секунду на стандартном диске (Very very slow). Чудес то не бывает.

     
     
  • 7.28, Veter (??), 00:51, 25/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    У редис есть append-only журнал, аналог журналов реляционных СУБД. И точно так же, как и у мускуля и постгреса fync вызывается не после каждой транзакции, и целостность данных у всех названных решений идентична (если не учитывать возможные ошибки в реализации, естественно). Способ дальнейшего повышения надежности - построение кластера.
     
  • 4.27, Veter (??), 00:44, 25/02/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы принципиально не читаете статьи, на которые ссылаетесь?.. В названной вами статье есть небольшая ремарка - в случае, если кроме чтения есть и операции модификации, то результат будет совершенно иной. В самом деле, в отсутствие блокировок можно получить красивый результат... но добавка даже небольшого количества апдейтов ухудшает результат на порядки (в 10,100,100,... раз). Как правило, чтобы в БД были данные, их туда нужно писать... Это первое. Второе - редис старается эффективно работать в ситуации, когда БД не помещается в ОЗУ, в то время как мускуль и постгрес в такой ситуации совершенно неэффективны. Это второе. Плюс еще стоит вспомнить про компактное хранение данных. Это третье. А также учесть, что редис предоставляет быстрые выборки элементов списка и множество других операций, которые медленны или вовсе не реализованы в реляционных СУБД. Это четвертое. Можно и продолжить, но смысла нет, раз уж вы не удосужились прочитать названную вами же статью...
     
     
  • 5.29, Anonymousmouse (?), 03:25, 25/02/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А Вы принципиально не читаете сообщения, на которые отвечаете А вот не расск... большой текст свёрнут, показать
     
     
  • 6.32, Anonymousmouse (?), 14:49, 25/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> Плюс еще стоит вспомнить про компактное хранение данных. Это третье.
    > А вот тут редис и сливает постгресу и мускулу. Потому как не
    > знает никаких типов данных. На моих задачах редис проигрывает тому же
    > постгресу в три раза по потреблению памяти, потому как не умеет
    > integer.

    Времена меняются. В changelog'е к 2.2 отдельно подчёркнута оптимизация конкретно моего случая. Что ж, попробуем, посмотрим.

     
     
  • 7.33, Veter (??), 15:42, 25/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Времена меняются. В changelog'е к 2.2 отдельно подчёркнута оптимизация
    > конкретно моего случая. Что ж, попробуем, посмотрим.

    Еще рекомендуется 32-бит сборку ставить на 64-бит систему, экономия памяти выходит существенная.

    Что касается апдейтов в реляционных СУБД, все не так весело, как вы говорите. Например, при вставке записей в таблицу даже с относительно небольшим количеством записей (десятки миллионов), время на обновление индексов сильно возрастает. Когда многие выборки идут по недавно добавленным записям, то и тысячи транзакций в секунду становятся недостижимым результатом. В постгресе из-за версионности записей при наличии продолжительных транзакций начинает быстро накапливаться "мусор" и размер таблицы и индексов резко увеличивается. Разумеется, есть способы борьбы с такими явлениями, но скорость работы все равно значительно снижается плюс требуется регулярное администрирование. Есть и другие проблемы. В случае, когда поддержка SQL не требуется, к чему платить за нее такую цену?...

     
  • 2.31, Аноним (-), 11:37, 25/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >Чем лучше SQL-подобных БД ?

    проще => меньше ошибок, быстрее работает в качестве операционной БД

    вообще говоря стоит наверное рассмотреть хранилище данных, где NoSQL, как операционная БД, а с SQL аналитическая.

     

  • 1.8, Аноним (-), 15:13, 24/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Я, может, глупость скажу, но все эти затеи с МАСШТАБИРУЕМОСТЬЮ и ВЫСОКИМИ НАГРУЗКАМИ - как правило, от жадности. Когда любая сраная доска объявлений или платёжная система хочет всех юзеров захапать себе и стать монополистом. И начинаются наполеоновские планы: построим свой дата-центр, будет у нас 100 серваков под базу данных, и всё масштабируется, во круть-то! А юзерам оно зачем? Мне лично всё равно, на каком сервере находятся почтовые ящики моих корреспондентов, например, или их жаббер-аккаунты. И весь интернет изначально так устроен, когда один сервер перестаёт справляться с нагрузкой, появляются другие. И изначально весь мир так устроен. Как только любая система становится слишком большой, рядом вырастают другие. Так динозавры вымерли и империи развалились, поделом им. И гугль с фейсбуком та же судьба ждёт рано или поздно, с их имперскими амбициями. Так что у меня к этому хайпу вокруг NoSQL и горизонтальной масштабируемости сложное отношение. Долго думал, зачем оно может понадобиться мне на десктопе или на сервере в маленькой компании, и так и не придумал. Давайте лучше развивать P2P и всякие децентрализованные штуки, вот за ними реальное будущее, а сабж - сиюминутное нишевое решение для буржуев, лол.
     
     
  • 2.9, исчо_адын_аноним (?), 15:17, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > так устроен, когда один сервер перестаёт справляться с нагрузкой, появляются другие.
    > И изначально весь мир так устроен. Как только любая система становится
    > слишком большой, рядом вырастают другие. Так динозавры вымерли и империи развалились,
    > поделом им. И гугль с фейсбуком та же судьба ждёт рано
    > или поздно, с их имперскими амбициями. Так что у меня к
    > этому хайпу вокруг NoSQL и горизонтальной масштабируемости сложное отношение. Долго думал,
    > зачем оно может понадобиться мне на десктопе или на сервере в
    > маленькой компании, и так и не придумал. Давайте лучше развивать P2P
    > и всякие децентрализованные штуки, вот за ними реальное будущее, а сабж
    > - сиюминутное нишевое решение для буржуев, лол.

    Бери и развивай, только по причине того что ты аноним, фигу ты что сделаешь ;)

     
  • 2.11, Аноним (-), 15:27, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    спрашиваю, как аноним анонима, а вы с веб проектов денег не зарабатываете? а я зарабатываю, и работаю (как сейчас модно) с хайлоад проектами, и редис юзаю, и рад релизу до жопы.
     
     
  • 3.13, Аноним (-), 15:34, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    У меня старорежимная компания, поставляет готовый софт, зарабатывает на поддержке.
     
     
  • 4.16, Аноним (-), 15:46, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > У меня старорежимная компания, поставляет готовый софт, зарабатывает на поддержке.

    а вот если у вас будет больше клиентов, чем вы можете обслужить - вы не станете нанимать людей (это таже масштабируемость)? вроде как пусть люди идут к другим? сомневаюсь. так что не совсем понятно откуда вся это ненависть к затее с масштабируемостью.

     
  • 2.12, Аноним (-), 15:34, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Как-то меня звали на работу в одну платёжную систему, ну, у которой терминалы в метро. И там на собеседовании мужик такой говорит: "Когда-то у нас было всего 3 сотрудника и 10 терминалов, а сейчас у нас 20 сотрудников и 200 терминалов в двух городах, и мы продолжаем расти!" Я его спрашиваю: а кому от этого стало лучше? Комиссия за платежи снизилась, или у сотрудников зарплата выросла? Вы мне, наверно, сейчас $60000 в год предложите, раз у вас такая преуспевающая компания? А он кряхтит да жмётся, не знает, что ответить. Чего-то я, наверно, не понимаю.
     
     
  • 3.30, FilimoniC (?), 11:02, 25/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Как-то меня звали на работу в одну платёжную систему, ну, у которой
    > терминалы в метро. И там на собеседовании мужик такой говорит: "Когда-то
    > у нас было всего 3 сотрудника и 10 терминалов, а сейчас
    > у нас 20 сотрудников и 200 терминалов в двух городах, и
    > мы продолжаем расти!" Я его спрашиваю: а кому от этого стало
    > лучше? Комиссия за платежи снизилась, или у сотрудников зарплата выросла? Вы
    > мне, наверно, сейчас $60000 в год предложите, раз у вас такая
    > преуспевающая компания? А он кряхтит да жмётся, не знает, что ответить.
    > Чего-то я, наверно, не понимаю.

    200 терминалов это очень мало для платежной системы. У ныне покойного Pegas Pay было около 1000, при том, что особо с ним никто не хотел работать из-за стукнутой на голову финдиректорши

     
     
  • 4.34, pegas (??), 08:40, 22/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну во первых, стукнутая финдиректорша , самый главный владелец компании, а во вторых на сколько я знаю, если б не она, где б были твои познания. И pegas pay не покойник, между прочем.
     
  • 2.14, User294 (ok), 15:35, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Я, может, глупость скажу, но все эти затеи с МАСШТАБИРУЕМОСТЬЮ и ВЫСОКИМИ
    > НАГРУЗКАМИ - как правило, от жадности.

    Действительно, сервера в большом количестве - сцуко дорогое удовольствие. И если некая технология позволяет уменьщить количество потребных серверов в разы - PROFIT очевиден :)

    > Давайте лучше развивать P2P и всякие децентрализованные штуки, вот за ними реальное будущее

    Одно другому не мешает. Кстати, большинство DHT являются всего лишь большой базой ключ-значение, раскиданной на всех. В силу распределенности оно спокойно живет с МИЛЛИОНАМИ одновременных операций поиска, вставки и чего там еще и это даже никому ничего не стоит толком :)

     
  • 2.26, uF0 (?), 17:20, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > МАСШТАБИРУЕМОСТЬЮ и ВЫСОКИМИ НАГРУЗКАМИ - как правило, от жадности

    Это у тебя может быть от жадности, а у других 700 миллионов просмотров в месяц.

     

  • 1.20, _v_s_g_ (?), 16:02, 24/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну так всё-равно скажите, чем Redis лучше couchdb? Я интересуюсь, а не усмехаюсь....
     

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



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

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