Redis

Быстрое хранилище данных в памяти с открытым исходным кодом для использования в качестве базы данных, кэша, брокера сообщений или очереди.

Что такое Redis?

Redis – это быстрое хранилище данных типа «ключ‑значение» в памяти с открытым исходным кодом для использования в качестве базы данных, кэша, брокера сообщений или очереди. Оно обеспечивает время отклика на уровне долей миллисекунды и позволяет приложениям, работающим в режиме реального времени, выполнять миллионы запросов в секунду. Такие приложения востребованы в сфере игр, рекламных технологий, финансовых сервисов, здравоохранения и IoT. Redis широко применяется для кэширования, управления сеансами, аналитики в режиме реального времени, работы с геопространственными данными, потоковой передачи мультимедиа, поддержки чатов, сервисов обмена сообщениями и игровых таблиц лидеров.

Как работает Redis?

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

Amazon ElastiCache для Redis

Полностью управляемый сервис Redis с возможностью шифрования, изменения размера работающего кластера, обеспечения высокой доступности и соответствия требованиям. Подробнее >>

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

Хранилище данных в памяти

Все данные Redis находятся в основной памяти сервера, в отличие от таких баз данных, как PostgreSQL, Cassandra, MongoDB и других, которые большую часть данных хранят на магнитных дисках или SSD‑накопителях. По сравнению с традиционными дисковыми базами данных, требующими циклического обращения к диску для большинства операций, хранилища данных в памяти, такие как Redis, свободны от этого ограничения. Благодаря этому многократно увеличивается количество выполняемых операций и сокращается время отклика. В результате обеспечивается чрезвычайно высокая производительность. Операции чтения или записи в среднем занимают менее миллисекунды, скорость работы достигает миллионов операций в секунду.

Гибкие структуры данных

В отличие от упрощенных хранилищ на основе пар «ключ – значение», которые поддерживают ограниченный набор структур данных, Redis поддерживает огромное разнообразие структур данных, позволяющее удовлетворить потребности разнообразных приложений. Типы данных Redis включают:

  • строки – текстовые или двоичные данные размером до 512 МБ;
  • списки – коллекции строк, упорядоченные в порядке добавления;
  • множества – неупорядоченные коллекции строк с возможностью пересечения, объединения и сравнения с другими типами множеств;
  • сортированные множества – множества, упорядоченные по значению;
  • хэш‑таблицы – структуры данных для хранения списков полей и значений;
  • битовые массивы – тип данных, который дает возможность выполнять операции на уровне битов;
  • структуры HyperLogLog – вероятностные структуры данных, служащие для оценки количества уникальных элементов в наборе данных.

Простота и удобство

Redis упрощает код, позволяя писать меньше строк для хранения, использования данных и организации доступа к данным в приложениях. К примеру, если приложение содержит данные, хранящиеся в хэш‑таблице, и требуется сохранить эти данные в хранилище, можно просто использовать структуру данных хэш‑таблицы Redis. Решение подобной задачи с использованием хранилища данных, не поддерживающего структуры хэш‑таблиц, потребует написания серьезного объема кода для преобразования данных из одного формата в другой. Redis уже оснащен встроенными структурами данных и предоставляет множество возможностей их комбинирования и взаимодействия с данными клиента. Разработчикам под Redis доступны более ста клиентов с открытым исходным кодом. Поддерживаемые языки программирования включают Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go и многие другие.

Репликация и постоянное хранение

В Redis применяется архитектура узлов «ведущий‑подчиненный» и поддерживается асинхронная репликация, при которой данные могут копироваться на несколько подчиненных серверов. Это обеспечивает как улучшенные характеристики чтения (так как запросы могут быть распределены между серверами), так и ускоренное восстановление в случае сбоя основного сервера. Для обеспечения постоянного хранения Redis поддерживает снимки состояния на момент времени (копирование наборов данных Redis на диск).

Высокая доступность и масштабируемость

Redis предлагает архитектуру «ведущий‑подчиненный» с одним ведущим узлом или с кластерной топологией. Это позволяет создавать высокодоступные решения, обеспечивающие стабильную производительность и надежность. Если требуется настроить размер кластера, доступны различные варианты вертикального и горизонтального масштабирования. В результате можно наращивать кластер в соответствии с потребностями.

Возможность расширения

Redis – проект с открытым исходным кодом, поддерживаемый активным сообществом. Поскольку Redis базируется на открытых стандартах, поддерживает открытые форматы данных и имеет множество клиентов, отсутствует вероятность блокировки поставщиком или технологического тупика.

Кэширование

Redis прекрасно подходит для организации высокодоступного кэша в памяти, который уменьшает задержку доступа, увеличивает пропускную способность и снижает нагрузку на реляционную базу данных или базу данных NoSQL и на приложение. Redis может обеспечить доступ к часто запрашиваемым данным с задержкой в доли миллисекунды и позволяет с легкостью выполнять масштабирование, справляясь с повышением нагрузок без дорогостоящего наращивания мощности БД на уровне сервера. Типовые примеры использования Redis – это кэширование результатов запросов к базе данных, долговременных сессий, веб‑страниц или часто используемых объектов, таких как изображения, файлы и метаданные.

Чат, обмен сообщениями и очереди

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

Игровые таблицы лидеров

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

Хранилище сессий

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

Потоковая передача мультимедиа

Redis предлагает быстрое хранилище данных в памяти для примеров использования с потоковой передачей в режиме реального времени. Redis можно использовать для хранения метаданных профилей пользователей и историй просмотров, данных и токенов аутентификации миллионов пользователей, а также файлов манифеста. Это позволяет сетям CDN одновременно выполнять потоковую передачу видео миллионам пользователей мобильных и настольных компьютеров.

Работа с геопространственными данными

Redis предлагает специально разработанные операторы и структуры данных в памяти для управления поступающими в режиме реального времени геопространственными данными в нужном масштабе и с высокой скоростью. Такие команды, как GEOADD, GEODIST, GEORADIUS и GEORADIUSBYMEMBER, предназначенные для хранения, обработки и анализа геопространственных данных в режиме реального времени, позволяют Redis просто и быстро выполнять геопространственные операции. Redis можно использовать для добавления в приложение разнообразных возможностей на основе данных о местоположении, например чтобы определять время в пути, рассчитывать расстояние до пункта назначения и предоставлять информацию о достопримечательностях.

Машинное обучение

Чтобы быстро обрабатывать огромные объемы разнообразных данных, передаваемых на большой скорости, и автоматизировать принятие решений, современным приложениям, управляемым данными, требуется машинное обучение. Для таких примеров использования, как обнаружение мошенничества в играх и финансовых сервисах, торги в режиме реального времени в сфере рекламы, подбор пар на сайтах знакомств или поиск попутчиков, способность обрабатывать данные в режиме реального времени и принимать решения в течение нескольких десятков миллисекунд имеет первостепенное значение. Redis предоставляет скоростное хранилище данных в памяти, обеспечивающее быстрое создание, обучение и развертывание моделей машинного обучения.

Аналитика в режиме реального времени

Redis может использоваться с решениями потоковой передачи, такими как Apache Kafka и Amazon Kinesis, в качестве хранилища данных в памяти для сбора, обработки и анализа данных в режиме реального времени с задержкой на уровне долей миллисекунды. Redis – идеальный выбор для аналитики в режиме реального времени в таких примерах использования, как аналитика в социальных сетях, рекламный таргетинг, персонализация контента и IoT.

Поддержка различных языков

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

Python

Java

PHP

Полностью управляемый сервис Redis на AWS

Amazon предлагает полностью управляемый сервис Redis: Amazon ElastiCache для Redis, который доступен на уровне бесплатного пользования AWS и позволяет начать работу бесплатно. Amazon ElastiCache для Redis упрощает настройку, эксплуатацию и масштабирование развертываний Redis в облаке. Amazon ElastiCache позволяет всего за несколько минут выполнить масштабируемое и недорогое развертывание Redis в масштабе Интернета с возможностью настройки объема аппаратных ресурсов.
Начните работу с Amazon ElastiCache для Redis бесплатно за три простых шага.
Amazon ElastiCache для Redis

Регистрация

Изучите Amazon ElastiCache для Redis

Обучение с помощью простых учебных пособий

Узнайте, как создать кластер Redis.
Начните работу с ElastiCache для Redis

Приступите к работе

Начните разработку с помощью руководства пользователя.