Redis, сокращенно от Remote Dictionary Server, представляет собой хранилище структуры данных ключ-значение с открытым исходным кодом в памяти под лицензией BSD, написанное на языке C Сальваторе Санфиллипо и впервые выпущенное 10 мая 2009 года. В зависимости от того, как это настроенный, Redis может действовать как база данных, кеш или брокер сообщений. Важно отметить, что Redis — это система баз данных NoSQL. Это означает, что в отличие от систем баз данных, управляемых SQL (язык структурированных запросов), таких как MySQL, PostgreSQL и Oracle, Redis не хранит данные в четко определенных схемах базы данных, которые представляют собой таблицы, строки и столбцы. Вместо этого Redis хранит данные в структурах данных, что делает его очень гибким в использовании. В этом блоге мы описываем основные варианты использования Redis по различным основным типам структур данных.

Структуры данных в Redis

Давайте посмотрим на некоторые типы данных, которые поддерживает Redis. В Redis у нас есть строки, списки, наборы, отсортированные наборы и хэши, которые мы рассмотрим в этой статье. Кроме того, у нас есть другие типы данных, такие как битовые карты, гиперлоги и геопространственные индексы с запросами радиуса и потоками. Несмотря на то, что некоторые инструменты Redis с графическим интерфейсом написаны сообществом Redis, командная строка, безусловно, является наиболее важным клиентом, в отличие от популярных пользователей баз данных SQL, которые часто предпочитают системы управления с графическим интерфейсом, например, phpMyAdmin для MySQL и PgAdmin для PostgreSQL.

Давайте подробнее рассмотрим типы данных, которые существуют в Redis.

Строки Redis

Строки Redis — это самый простой тип значений Redis, используемый всеми другими типами структур данных, и они очень похожи на строки в других языках программирования, таких как Java или Python. Строки, которые могут содержать данные любого типа, считаются безопасными для двоичного кода и имеют максимальную длину 512 МБ. Вот пара полезных команд для строк Redis:

Чтобы сохранить строку «john» под таким ключом, как «student» в Redis, выполните команду:

КОМПЛЕКТ «студент» «джон»

Чтобы получить строку, используйте команду GET, как показано ниже:

ПОЛУЧИТЬ "студент"

Чтобы удалить строку, содержащуюся в ключе, используйте команду DEL:

ДЭЛ «студент»

Примеры использования строк Redis

  1. Кэш сеанса. Многие веб-сайты используют Redis Strings для создания кеша сеанса, чтобы ускорить работу своего веб-сайта за счет кэширования фрагментов HTML или страниц. Поскольку данные временно хранятся в ОЗУ, этот атрибут делает Redis идеальным выбором в качестве кэша сеанса. Он может временно хранить пользовательские данные, например, товары, хранящиеся в корзине покупок в интернет-магазине, что крайне важно, поскольку ваши пользователи не потеряют свои данные в случае выхода из системы или потери соединения.
  2. Очереди: любое приложение, имеющее дело с перегрузкой трафика, обменом сообщениями, сбором данных, управлением заданиями или маршрутизацией упаковщиков, должно учитывать Очередь Redis, так как это может помочь вам управлять размером очереди по скорости поступления и выезд на раздачу ресурсов.
  3. Использование и выставление счетов по счетчикам. Менее известный вариант использования Redis Strings — измерение в режиме реального времени для моделей ценообразования на основе потребления. Это позволяет платформам SaaS, которые выставляют счета на основе фактического использования, измерять активность своих клиентов, например, в телекоммуникационной отрасли, где они могут взимать плату за текстовые сообщения или минуты.

Списки Redis

Списки содержат строки, отсортированные по порядку вставки. С помощью списков Redis вы можете добавлять элементы в начало или конец списков, что очень полезно для постановки заданий в очередь. Если есть более срочные задания, которые необходимо выполнить, их можно поставить перед другими заданиями с более низким приоритетом в очереди. Мы будем использовать команду LPUSH для вставки элемента в начале или слева от строки, а команду RPUSH — для вставки в конце или справа от нашей строки. Давайте посмотрим на пример:

LPUSH list x # теперь список «x»

LPUSH list y # теперь список «y», «x»

RPUSH list z # теперь список «y», «x», «z» (обратите внимание, как элемент «z» был добавлен в конец списка командой RPUSH)

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

  1. Сайты социальных сетей.Социальные платформы, такие как Twitter, используют списки Redis для заполнения своих хроник или каналов на главной странице и могут настраивать верхнюю часть своих каналов с помощью популярных твитов или историй.
  2. RSS-каналы. Создавайте новостные каналы из настраиваемых источников, откуда вы можете получать последние обновления и позволять заинтересованным подписчикам подписываться на ваш RSS-канал.
  3. Списки лидеров. Форумы, такие как Reddit и другие платформы для голосования, используют списки Redis для добавления статей в список лидеров и сортировки по наибольшему количеству голосов.

Узнайте, как создать свою собственную ленту Twitter, в нашем блоге Кэширование твитов с помощью Node.js, Redis и Socket.io.

Наборы Redis

Наборы Redis — это мощные типы данных, которые поддерживают мощные операции, такие как пересечения и объединения. Они расположены не в каком-либо порядке и обычно используются, когда вы хотите провести аудит и увидеть связи между различными переменными. Наборы выполняются достаточно быстро, и независимо от количества сохраненных элементов добавление или удаление элементов в наборе займет одинаковое время. Кроме того, наборы не допускают дублирования ключей или элементов, поэтому ключ, добавленный в набор несколько раз, будет просто проигнорирован. Это обеспечивается функцией под названием SADD, которая позволяет избежать дублирования нескольких похожих записей. Атрибут SADD можно использовать при проверке уникальных значений, а также для планирования заданий, работающих в фоновом режиме, включая задания cron, которые представляют собой автоматизированные сценарии.

Они особенно полезны для анализа поведения клиентов в режиме реального времени на вашем сайте онлайн-покупок. Например, если вы управляете интернет-магазином одежды, Redis Sorted Sets использует методы сопоставления отношений, такие как объединение, пересечение и вычитание (обычно применяемые в диаграммах Венна), чтобы дать точную картину поведения клиентов. Вы можете получить данные о моделях покупок между полами, о том, какая одежда продается больше всего и в какие часы фиксируются самые высокие продажи.

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

  1. Анализ продаж в электронной торговле. Многие интернет-магазины используют Redis Sets для анализа поведения клиентов, например поиска или покупки определенной категории или подкатегории продуктов. Например, владелец книжного интернет-магазина может узнать, сколько покупателей приобрели медицинские книги по психологии.
  2. Отслеживание IP-адресов. Наборы Redis – отличный инструмент для разработчиков, которым необходимо проанализировать все IP-адреса, посетившие определенную страницу веб-сайта или сообщение в блоге, и иметь возможность игнорировать все дубликаты для получения уникальных посетителей с их функцией SADD.
  3. Фильтрация неприемлемого контента. Для любого приложения, которое собирает данные, вводимые пользователем, рекомендуется внедрить фильтрацию контента для неприемлемых слов, и вы можете сделать это с помощью наборов Redis, добавив слова, которые вы хотите отфильтровать. на клавишу SET и команду SADD.

Сортированные наборы

Как следует из названия, отсортированные наборы Redis представляют собой набор строк, которые назначают порядок вашим элементам, и являются одной из самых продвинутых структур данных в Redis. Они похожи на наборы Redis, только наборы не имеют порядка, в то время как отсортированные наборы связывают каждого члена с оценкой. Сортированные наборы известны тем, что они очень быстрые, так как вы можете возвращать упорядоченные списки и получать доступ к элементам в кратчайшие сроки.

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

  1. Платформы вопросов и ответов. Многие платформы вопросов и ответов, такие как Stack Overflow и Quora, используют отсортированные наборы Redis для ранжирования ответов с наибольшим количеством голосов на каждый предложенный вопрос, чтобы гарантировать, что контент самого высокого качества будет отображаться в верхней части страницы.
  2. Таблица результатов игровых приложений.Игровые онлайн-приложения используют Redis Sorted Sets для ведения своих списков рекордов, поскольку результаты могут повторяться, а строки, содержащие уникальные данные пользователя, — нет.
  3. Служба планирования задач. Отсортированные наборы Redis — отличный инструмент для службы планирования задач, так как вы можете связать оценку для определения приоритета задачи в очереди. Для любой задачи, для которой не отмечена оценка, вы можете использовать параметр ВЕС со значением по умолчанию, равным 1.
  4. Гео-хэширование: API геоиндексации Redis использует отсортированный набор для метода Гео-хэш, который позволяет вам индексировать местоположения на основе широты и долготы, превращая многомерные данные в линейные данные.

Хэши Redis

Redis Hashes — это карты между строковыми полями и строковыми значениями. Это подходящий тип данных, если вам необходимо создать контейнер уникальных полей и их значений для представления объектов. Хэши позволяют хранить приличное количество полей, вплоть до 232–1 пар поле-значение (более 4 миллиардов), занимая при этом очень мало места. Вы должны использовать хэши Redis, когда это возможно, так как вы можете использовать небольшой экземпляр Redis для хранения миллионов объектов. Вы можете использовать базовые операции хэш-команды, такие как получение, установка, существование, в дополнение ко многим расширенным операциям.

Примеры использования хэшей Redis

  1. Профили пользователей. Многие веб-приложения используют хэши Redis для своих профилей пользователей, поскольку они могут использовать один хэш для всех пользовательских полей, таких как имя, фамилия, адрес электронной почты, пароль и т. д.
  2. Сообщения пользователей. Социальные платформы, такие как Instagram, используют хэши Redis для сопоставления всех архивных фотографий или сообщений с одним пользователем. Механизм хеширования позволяет им очень быстро искать и возвращать значения, умещать данные в памяти и использовать сохраняемость данных в случае выхода из строя одного из их серверов.
  3. Хранение мультитенантных показателей. Мультитенантные приложения могут использовать хэши Redis для записи и хранения своих продуктов и показателей продаж таким образом, чтобы гарантировать надежное разделение между каждым арендатором, поскольку хэши могут быть эффективно закодированы в очень маленький объем памяти.

Кто использует Redis?

Redis завоевал огромную долю рынка в сфере путешествий и гостеприимства, общественных форумов, социальных сетей, SaaS и электронной коммерции, и это лишь некоторые из них. В число ведущих компаний, использующих Redis, входят Pinterest, Uber, Slack, Airbnb, Twitter и Stack Overflow. Вот некоторые статистические данные о популярности Redis сегодня:

  • 4107 компаний сообщили об использовании Redis на StackShare
  • 8 759 разработчиков заявили об использовании Redis на StackShare
  • 38 094 пользователя GitHub отметили Redis звездочкой
  • База данных #8 в рейтинге DB-Engines с результатом 144,08.