The OpenNET Project / Index page

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

Представлен релиз БД Redis 2.0.0

07.09.2010 14:29

Увидел свет стабильный релиз хранилища Redis 2.0, относящегося к классу NoSQL-систем и предоставляющего похожие на Memcached функции для хранения данных в формате ключ/значение. Активное кэширование данных в оперативной памяти позволяет добиться фантастической производительности: 110000 операций записи или 81000 операций чтения в секунду на сервере с CPU Xeon X3320 2.5 ГГц. В отличие от Memcached, Redis обеспечивает постоянное хранение данных на диске и гарантирует сохранность БД в случае аварийного завершения работы. Исходные тексты проекта распространяются в рамках лицензии BSD.

Redis позволяет использовать, помимо строк, в качестве значений списки, хэши и множества. Для управления данными поддерживаются такие команды, как инкремент/декремент, стандартные операции над списками и множествами (объединение, пересечение), переименование ключей, множественные выборки и функции сортировки. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl.

По заявлению разработчиков, версия 2.0.0 ознаменовала значительную переработку кодовой базы. Из новых возможностей можно отметить:

  • Поддержка виртуальной памяти. Версии 1.x требовали обязательного дублирования всех данных в ОЗУ, что накладывало заметные ограничения на общий размер базы. В Redis 2.0.0 добавлен механизм, позволяющий держать в ОЗУ только ключи, а значения перемещать по мере необходимости в специальный файл подкачки (используется собственная реализация, не системный swap);
  • Поддержка транзакций. Новые команды MULTI, EXEC и DISCARD позволяют выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданной группы команд, а в случае проблем позволяя откатить изменения;
  • Поддержка хранения хэшей, дающих возможность привязать к ключу набор из дополнительных пар ключ/значение. Для обработки данных нового типа представлены команды: HSET, HGET, HDEL, HLEN, HKEYS;
  • Режим обмена сообщениями "публикация/подписка", при котором создается канал, сообщения из которого распространяются клиентам по подписке;
  • Поддержка блокирующего режима выборки списков (команды BLPOP и BRPOP), что позволяет заблокировать операцию чтения списка ключей, до того момента, пока все ключи не будут добавлены в базу (один клиент ждет пока другой клиент не добавит определенные записи);

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

  1. Главная ссылка к новости (http://groups.google.com/group...)
  2. OpenNews: Redis - наследник memcached с поддержкой постоянного хранения данных
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/27875-Redis
Ключевые слова: Redis, nosql, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (18) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 15:58, 07/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что за ниша предназначена для данного вида БД?
     
     
  • 2.2, Трухин_Юрий_Владимирович (ok), 16:09, 07/09/2010 [^] [^^] [^^^] [ответить]  
  • –6 +/
    организация storage key-value баз данных. Для многих программ реляционная модель не подходит, а с помощью NoSQL можно сделать все просто. И по производительности будет значительно быстрее реляционных хранилищ.
     
     
  • 3.3, Трухин_Юрий_Владимирович (ok), 16:10, 07/09/2010 [^] [^^] [^^^] [ответить]  
  • –9 +/
    мне интересно другое, есть ли у Redis поддержка транзакций? У MongoDB нет, что чревато потерей и кашей данных при резком выключении сервера. Есть тут те, кто пробовал Redis?

     
     
  • 4.4, User (??), 16:17, 07/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Поддержка транзакций. Новые команды MULTI, EXEC и DISCARD позволяют выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданной группы команд, а в случае проблем позволяя откатить изменения;
     
     
  • 5.5, Влад (??), 16:19, 07/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А как насчет блокировок?
     
     
  • 6.6, Alikus (ok), 16:32, 07/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Вы про http://code.google.com/p/redis/wiki/BlpopCommand ?
     
     
  • 7.8, Трухин_Юрий_Владимирович (ok), 18:47, 07/09/2010 [^] [^^] [^^^] [ответить]  
  • –7 +/
    в принципе оно решает проблему если посылать данные по ключу за запрос. т.е. если 2 клиента попробуют писать в один ключ - она поставит их в очередь. Но речь таки о транзакциях: если мы пишем блок данных, который логически связан за один запрос. Выключили свет и записалась только часть. Что тогда?
     
  • 5.9, Трухин_Юрий_Владимирович (ok), 18:49, 07/09/2010 [^] [^^] [^^^] [ответить]  
  • –6 +/
    >Поддержка транзакций. Новые команды MULTI, EXEC и DISCARD позволяют выполнить за один
    >шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов
    >не могут вклиниться)

    да, это понятно, а если невозможно завершение записи? по правилам транзакция должна откатиться, удалить недописанные данные и сообщить об этом

     
     
  • 6.10, XoRe (ok), 19:07, 07/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >по правилам транзакция должна
    >откатиться, удалить недописанные данные и сообщить об этом

    При выключенном питании? =)

     
     
  • 7.11, Roswell (?), 20:37, 07/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    При следующем старте.
     
  • 2.13, Michael Shigorin (ok), 09:43, 08/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Наш гура высказался дословно так: "Редис - база с оч условным durability" (вероятно, относится к осмотренному ранее).
     

  • 1.7, pavlinux (ok), 17:15, 07/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > добавлен механизм, позволяющий держать в ОЗУ

    Чё, прям таки в ОЗУ, иль всё ж в VM? (а то понимаете ли VM разный бывает)

    > использовать не системный swap

    Интересно, а система об этом как узнает, если вдруг вся оперативка кончится?

     
     
  • 2.12, Вася (??), 00:43, 08/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Интересно, а система об этом как узнает, если вдруг вся оперативка кончится?
    >

    В начале работы запрашивается кусок памяти, который используется под буферв в/в. И если этого куска не хватает, то часть сбрасывается на диск. Это они и назвали не системный swap

     
     
  • 3.14, аноним (?), 10:05, 08/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    прикольно. но вопрос то в том - не свалится ли этот кусок в системный своп при определенных условиях?
    а то будет из системного в не системный гонять. и наоборот.
     
     
  • 4.15, Вася (??), 18:00, 08/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >а то будет из системного в не системный гонять. и наоборот.

    Могу только предположить, что для Базы Данных отводится персональный сервер. Потому не зачем там запускать какие-либо программы. И следовательно ни что не потребует ОС заниматься swap-ом

    ЗЫ. Всегда использовал для буферов 4Кб, но в прошлом году пересмотрел свою позицию и размахнулся аж на 64Кб. И конечно получил выигрыш в скорости. Однако Ваш вопрос заставил меня задуматься - а всегда ли будет этот выигрыш. И не стоит ли для критичных участков алгоритма вернуться к 4Кб.

     
     
  • 5.17, К.А. (?), 22:42, 09/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Могу только предположить, что для Базы Данных отводится персональный сервер

    не жирно ли будет? ключевое слово: виртуализация. Ваш К.А.

     
     
  • 6.18, XoRe (ok), 00:49, 10/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>Могу только предположить, что для Базы Данных отводится персональный сервер
    >
    >не жирно ли будет? ключевое слово: виртуализация. Ваш К.А.

    Как "К.А."-то расшифровывается?

     
     
  • 7.19, imp13 (?), 09:05, 10/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>>Могу только предположить, что для Базы Данных отводится персональный сервер
    >>
    >>не жирно ли будет? ключевое слово: виртуализация. Ваш К.А.
    >
    >Как "К.А."-то расшифровывается?

    Капитан Ачевиднасть

     

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



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

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