Redis

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

Категории: , Метки: ,

Описание

Redis – быстрое хранилище в памяти с открытым исходным кодом для структур данных «ключ-значение». Redis поставляется с набором разнообразных структур данных в памяти, что упрощает создание различных специальных приложений. Самые распространенные примеры использования Redis включают кэширование, управление сессиями, системы «издатель-подписчик» и таблицы лидеров. Это самое популярное на текущий момент хранилище пар «ключ-значение». Оно обладает лицензией BSD, написано на оптимизированном коде C и поддерживает несколько языков разработки. Название Redis является акронимом от REmote DIctionary Server.

Особенности Redis

  • Redis умеет сохранять данные на диск. Можно настроить Redis так, чтобы данные вообще не сохранялись, сохранялись периодически по принципу copy-on-write, или сохранялись периодически и писались в журнал (binlog). Таким образом, всегда можно добиться требуемого баланса между производительностью и надежностью.
  • В основе своей использует записи вида ключ-значение. Ключи бинарнобезопасны. Это значит, что в качесте ключа может быть использована любая бинарная последовательность, полученная хоть из сроки, хоть из JPG-картинки. Максимальный размер ключа — 512 MB.
  • В качестве значений поддерживаются следующие структуры данных:
    • Строки (strings). Это те же самые ключи, но сохранённые как значения.
    • Списки (lists). Классические списки строк, упорядоченные в порядке вставки, которая возможна как со стороны головы, так и со стороны хвоста списка.
    • Множества (sets). Множества строк в математическом понимании: не упорядочены, поддерживают операции вставки, проверки вхождения элемента, пересечения и разницы множеств.
    • Упорядоченные множества (sorted sets). Упорядоченное множество отличается от обычного тем, что его элементы упорядочены по особому параметру «score». Позволяет выбирать группы значений из множества. Например, 10 сверху. Присутствует возможность лексических упорядоченных множеств строк, у которых поле score одинаковое.
    • Хеш-таблицы (hashes). Классические хеш-таблицы или ассоциативные массивы.
    • Битовые массивы (bitmaps).
    • HyperLogLog. Структура данных для реализации алгоритма случайного вероятностного подсчета количества уникальных значений.
  • Для всех типов поддерживаются атомарные операции (например вставка в список или пересечение множеств).
  • Позволяет хранить не только строки, но и массивы (которые могут использоваться в качестве очередей или стеков), словари, множества без повторов, , а также множества, отсортированные по некой величине. Разумеется, можно работать с отдельными элементами списков, словарей и множеств. Присутствует возможность указать время жизни данных (двумя способами — «удалить тогда-то» и «удалить через …»).
  • Redis — это однопоточный сервер. Такое решение сильно упрощает поддержку кода, обеспечивает атомарность операций и позволяет запустить по одному процессу Redis на каждое ядро процессора. Разумеется, каждый процесс будет прослушивать свой порт.
  • В Redis есть репликация. Репликация с несколькими главными серверами не поддерживается. Каждый подчиненный сервер может выступать в роли главного для других. Репликация в Redis не приводит к блокировкам ни на главном сервере, ни на подчиненных. На репликах разрешена операция записи. Когда главный и подчиненный сервер восстанавливают соединение после разрыва, происходит полная синхронизация (resync).
  • Redis поддерживает транзакции (будут последовательно выполнены либо все операции, либо ни одной) и пакетную обработку команд (выполняем пачку команд, затем получаем пачку результатов). Притом ничто не мешает использовать их совместно.
  • Redis — поддержка механизма publish/subscribe. С его помощью приложения могут создавать каналы, подписываться на них и помещать в каналы сообщения, которые будут получены всеми подписчиками. Что-то вроде IRC-чата.

 

Варианты использования Redis

  • Хранилище сессий и профилей пользователей;
  • Сервер очередей, плюс держим в уме механизм publish/subscribe;
  • Полноценная замена Memcached, притом в случае с Redis мы получим репликацию, более длинные ключи и значения, возможность восстановления кэша с диска и тп;
  • Место для хранения количества пользователей онлайн, кодов капч, различных флагов, саджестов поисковых запросов;
  • СУБД для небольших приложений — сокращалок ссылок, имиджбордов, возможно даже блогов;
  • Роль «словаря» в шардинге, то есть сервер, который знает, какие шарды на каких серверах искать;
  • Хранилище промежуточных результатов вычислений при обработке больших объемов данных.

 

Преимущества Redis

  • Redis очень прост (проще пареной репы! 🙂 и прекрасно документирован;
  • На данный момент длина ключа в Redis может составлять до 231 байт, длина строки — до 512 Мб, списки и множества могут содержать до 232 элементов, один экземпляр Redis может хранить до 232 ключей;
  • На одном сервере можно держать несколько пронумерованных баз данных, по умолчанию их число равно 16-и.
  • Приложения, использующие Redis, удобно профилировать (команда slowlog) и отлаживать (команда monitor);
  • Redis написан таким образом, что резервную копию его базы данных можно сделать простым копированием файла дампа, даже во время работы сервера;
  • Официально Windows не поддерживается, но есть неофициальные сборки Redis для Windows;
  • Доступ к серверу можно защитить паролем;
  • Разработка спонсируется компанией VMWare;
  • В настоящее время ведется работа над Redis Cluster;
  • Redis используется в Tumblr, Disqus, Skype, StackOverflow, Instagram, GitHub, Flickr, Digg и много где еще.
  • NoSQL
    ...
  • NoSQL
    ...
  • Базы данных
    ...
  • Разработка
    ...

Аналоги и альтернативы для Redis

Redis - похожие продукты (инструменты, решения, сервисы)

Notion

Приложение заметок с AI, объединяет в себе огромное количество инструментов. Заметки и...

WordPress

Платформа для управления сайтами №1 в мире. Отличается большим количеством готовых плагинов...

Electron JS

Electron JS позволяет создавать нативные приложения для Windows, macOS и Linux с...

GitHub

GitHub - это система управления проектами и версиями кода, а также платформа...

Яндекс.Трекер

Яндекс.Трекер — сервис для управления проектами и контроля выполнения задач

Make (ex. Integromat)

Make - это онлайн-платформа для автоматизации процессов

WooCommerce

Платформа для создания e-commerce решений, маркетплейсов и интернет магазинов. №1 на мировом...

Swift

Язык программирования с открытым кодом. Мощь, простота и потрясающие приложения для macOS...

Zapier

Zapier — универсальный онлайн-конструктор автоматизаций. Он может заставить два веб-приложения работать вместе.

HumHub

Совместно просматривайте и редактируйте офисные документы (Word, Excel или PowerPoint) в режиме...

ApiX-Drive

ApiX-Drive — онлайн-коннектор разных сервисов и приложений между собой без программистов.

Отзывы

Отзывов пока нет.

Будьте первым, кто оставил отзыв на “Redis”

Ваш адрес email не будет опубликован. Обязательные поля помечены *