Redis

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Redis
Тип

NoSQL-СУБД
ключ — значение»)

Разработчик

Сальваторе Санфилиппо

Написана на

C

Операционная система

Кроссплатформенный

Языки интерфейса

англ.

Первый выпуск

10 апреля 2009

Последняя версия

2.8.17 (19 сентября 2014)

Состояние

активный

Лицензия

BSD

Сайт

redis.io

Redis — сетевое журналируемое хранилище данных типа «ключ — значение» с открытым исходным кодом.

Дизайн[править | править вики-текст]

Хранит базу данных в оперативной памяти, снабжена механизмами снимков и журналирования для обеспечения постоянного хранения. Также предоставляет операции для реализации механизма обмена сообщениями в паттерне publish — subscribe[en]. Поддерживает репликацию данных с основных узлов на несколько подчинённых (англ. master — slave replication).

Redis работает на большинстве POSIX систем, таких как Linux, *BSD, Mac OS X без каких-либо дополнений. Linux и Mac OS X — две операционные системы, в которых был разработан и в большей степени протестирован Redis, поэтому VMware рекомендует использовать именно их для развертывания. Официальной поддержки для сборок Windows нет, но доступны некоторые опции, позволяющие обеспечить работу Redis на этой ОС[1]. Компания Microsoft активно работает над переносом Redis на Windows.

По состоянию на 15 июля 2011 года, разработка Redis спонсируется компанией VMware[2].

В версии 2.6.0 добавлена поддержка Lua, позволяющего выполнять запросы на сервере. Lua позволяет атомарно совершить произвольную обработку данных на сервере и предназначена для использования в случае, когда нельзя достичь того же результата с использованием стандартных команд.

Поддерживаемые языки программирования[править | править вики-текст]

Множество языков программирования имеют библиотеки для работы с Redis: C, C++, C#, Clojure, Lisp, Erlang, Java, JavaScript, Haskell, Lua, Perl, PHP, Python, Ruby, Scala, Go, Tcl, Rust.

Модели данных[править | править вики-текст]

Все данные Redis хранит в виде словаря, в котором ключи связаны со своими значениями. Одно из ключевых отличий Redis от других хранилищ данных заключается в том, что значения этих ключей не ограничиваются строками. Поддерживаются следующие абстрактные типы данных:

  • Списки строк
  • Множества строк (коллекции неповторяющихся несортированных элементов)
  • Сортированные множества строк (коллекции неповторяющихся элементов, упорядоченных по score (вещественное число)
  • Словари, в которых и ключи и их значения — строки.

Тип данных значения определяет, какие операции (команды) доступны для него. Redis поддерживает такие высокоуровневые операции, как объединение и разность наборов, а также их сортировку.

Восстановление данных[править | править вики-текст]

Восстановление данных проводится двумя разными способами. Первый - это механизм снимков, в котором данные асинхронно переносятся из оперативной памяти в файл формата *RDB (расширение дампов Redis). Второй способ (с версии 1.1) — файл, доступный только для дозаписи, в котором хранится лог всех операций, изменявших данные в памяти.

Репликация[править | править вики-текст]

Redis поддерживает репликацию типа master-slave. Данные с любого сервера Redis могут реплицироваться произвольное количество раз. Репликация полезна для масштабирования чтения (но не записи) или при очень больших объёмах данных.

Производительность[править | править вики-текст]

Высокая производительность Redis обуславливается тем, что все данные хранятся в оперативной памяти. На Linux-сервере начального уровня был установлен результат в 110 000 запросов SET и 81 000 запросов GET в секунду (бенчмарк).

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]