Увидел свет стабильный релиз хранилища 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), что позволяет заблокировать операцию чтения списка ключей, до того момента, пока все ключи не будут добавлены в базу (один клиент ждет пока другой клиент не добавит определенные записи);

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

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