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

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

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

Начало разработки

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