21 Ноября 2024, 21:42

Redis

Автор turbo, 01 Сентября 2009, 18:49

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

turbo

01 Сентября 2009, 18:49 Последнее редактирование: 25 Февраля 2011, 10:55 от Zhek@Ch
Представлен проект Redis, который продолжает идеи таких проектов, как memcached и memcachedb, и является серверным хранилищем данных вида ключ/значение. Для обеспечения максимальной производительности Redis во время работы хранит все данные в оперативной памяти, периодически сохраняя снимки базы на диск. Архитектура приложения - однопроцессная, основанная на обработке событий, что позволяет избежать блокировок.

По сравнению с memcached, Redis позволяет использовать в качестве значений не только строки, но и списки, множества. Механизмы транзакций отсутствуют, что компенсируется богатым набором атомарных команд: инкремент/декремент, стандартные операции над списками и множествами, переименование ключей, множественная выборка и т.д.

Redis может оказаться хорошим выбором для высоконагруженных сервисов, так как адаптирован под максимальную производительность и поддерживает репликацию, а клиентские библиотеки доступны для большинства популярных языков: Perl, Python, PHP, Java, Ruby, Tcl и других. Заявленные значения производительности составляют 110000 операций записи или 81000 операций выборки в секунду на процессоре Xeon X3320 2.5 ГГц под управлением Linux 2.6. Еще одним преимуществом можно считать либеральную лицензию BSD.

http://www.opennet.r...shtml?num=23236

Rubik

25 Февраля 2011, 08:16 #1 Последнее редактирование: 25 Февраля 2011, 10:54 от Zhek@Ch
[size="3"]Релиз БД Redis 2.2 [/size]

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

Zhek@Ch

19 Октября 2011, 18:10 #2 Последнее редактирование: 19 Октября 2011, 18:10 от Zhek@Ch
[size="3"]Релиз БД Redis 2.4 [/size]

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

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

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

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

  • За счет использования специального кодирования при работе с отсортированными списками, удалось заметное понизить потребление памяти при использовании небольших упорядоченных списков;
  • Увеличена скорость загрузки и сохранения для списков, включающих уже сериализованные данные. Например, исключено выполнение дублирующей сериализации для использующих специальное кодирование типов ziplist, zipmap и intset;
  • Возможность одновременного указания нескольких значений для почти всех команд, связанных с записью: SADD, HDEL, SREM, ZREM, ZADD и L/RPUSH. Например, "HDEL hash field2 field3 field3..." позволяет за раз удалить несколько элементов;
  • Поддержка библиотеки Jemalloc с реализацией высоко эффективных функций распределения памяти, которая теперь используется по умолчанию при работе на платформе Linux. Jemalloc позволяет заметно снизить уровень фрагментации памяти;
  • Сокращено потребление памяти в процессе записи данных за счет сокращения числа операций дублирующего копирования (copy-on-write) при работе с хранилищем RDB и логом AOF;
  • Расширение числа информационных полей, выводимых при выполнении команды INFO. Например, дополнительно отображается пиковое потребление и пиковая фрагментация памяти, время форка.
  • Новая отладочная команда OBJECT для анализа объектов. Команда позволяет изучить внутренности объектов, ассоциированных с ключами, понять используется ли дополнительное кодирование для ключей. При использовании Redis в качестве кэша выдаваемая командой OBJECT информация может быть полезна для реализации механизма вытеснения ключей, работающего на уровне приложения;
  • Новая отладочная команда CLIENT для анализа клиентов. Команда позволяет посмотреть список клиентов и при необходимости принудительно разорвать соединение;
  • Поддержка выполнения соединения от slave к master в неблокирующем режиме (репликация реализована в неблокирующем режиме изначально, но выполнение операции connect могло приводить к блокировке);
  • Улучшена обработка соединений в командной оболочке redis-cli, например, теперь производится реконнект после обрыва связи. Добавлена поддержка указания цифровых префиксов перед командами, через которые передаётся число повторов. Например, "4 ping" приведёт к выполнению команды ping четыре раза подряд. В сочетании с утилитой grep теперь возможен мониторинг отдельных параметров INFO, например: "./redis-cli -r 10000 -i 1 info | grep used_memory_human";
  • Расширены возможности команды redis-benchmark, которая теперь может измерять производительность произвольной команды, заданной пользователем;
  • При выполнении утилиты make, вывод теперь выделяется разными цветами, что упрощает восприятие ошибок и предупреждений на этапе сборки;
  • Подсистема с реализацией виртуальной памяти признана устаревшей. В будущих версиях код VM будет удалён, как не эффективный и не оправдавший надежды. Механизм VM, позволял держать в ОЗУ только ключи, а значения перемещать по мере необходимости в специальный файл подкачки.
  • Многочисленные оптимизации производительности и устранение ошибок;
  • Подготовлен порт Redis для платформы Windows;