Redis

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

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

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

 

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

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

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

Начните работу с ElastiCache для Redis

Начало разработки с использованием Amazon ElastiCache для Redis

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