В этой статье мы расскажем, что такое Redis, какие данные она может обрабатывать, а также покажем базовый набор команд для работы.
Что такое Redis
Redis (англ. remote dictionary server) — это нереляционная система управления базами данных. Для хранения данных она использует формат «ключ‑значение». Система написана на языке С и имеет открытый исходный код. Первая версия программы появилась 10 мая 2009 года благодаря разработчику Сальваторе Санфилиппо.
Linux Redis
Redis считается одной из самых производительных СУБД — время отклика сервера составляет доли миллисекунд. Поэтому система востребована в сферах, где нужно работать с большими массивами данных: разработка игр, аналитика, работа с геоданными, поддержка онлайн-чатов, службы такси, потоковая передача мультимедиа и других.
Хранилище используется не только как база данных, но и как средство кэширования и брокер сообщений. Сервер хранит данные не строго в схемах (таблицах, строках и столбцах), а в самих структурах данных. Это позволяет гибко настраивать систему. Кроме того, можно использовать облачный вариант хранилища.
Преимущества
В отличие от стандартных хранилищ данных, решение remote server имеет следующие преимущества:
- 1. Высокая производительность. Редис поддерживает хранение данных на сервере исключительно в кэше, поэтому их не приходится перемещать на диск. Это повышает пропускную способность и сокращает задержку ядра — система способна выполнить миллион операций в секунду.
- 2. Масштабируемость. В Redis возможна настройка кластерной архитектуры. Благодаря этому можно создавать проекты, которые будут работать надежно и стабильно. Также можно выбрать размер кластера или нарастить его: доступны варианты горизонтального и вертикального масштабирования.
- 3. Асинхронная репликация. Она позволяет копировать информацию на несколько связанных серверов. Таким образом можно распределить запросы между несколькими серверами, и это положительно повлияет на скорость чтения и восстановления данных при сбое.
- 4. Поддержка различных структур данных. Обычно хранилища работают с ограниченным набором данных. В отличие от них Redis обрабатывает разнообразные типы данных: строки, списки, потоки, JSON, битовые массивы, гиперлоги и другие.
- 5. Функциональность. С помощью Redis можно создать сложный код с меньшим количеством простых строк (для хранения, использования и организации доступа к данным). Например, вы хотите настроить перемещение данных в хранилище одной строкой кода. Обычно, чтобы реализовать эту задачу, потребуется написать код со сложной структурой. В Redis для этого достаточно использовать хэш данных. Языки, которые поддерживает Redis, — Java, PHP, C++, JavaScript, Node.js, Python, Ruby, Go и другие.
Несмотря на большое количество преимуществ, СУБД Redis не универсальна и подходит для ограниченного списка задач и проектов.
Для чего применяется Redis
Рассмотрим, зачем нужен Redis:
- Кэширование данных основного хранилища. Redis cache помогает снизить нагрузку на основное хранилище и само приложение без дорогостоящего наращивания мощностей на серверах.
- Создание чатов и очередей. Высокая производительность позволяет настраивать «быстрые» ленты новостей в блогах и социальных сетях, обновление лент с комментариями и чатов в режиме реального времени.
- Брокер сообщений. Позволяет разгрузить веб-сервисы в распределённой системе: при отправке сообщений не требуется дополнительное время на ресурсоёмкие операции (например, маршрутизацию или поиск приёмников).
- СУБД для крупных приложений. Remote server позволяет равномерно распределить сетевой трафик.
- Хранение сессий. Благодаря высокой доступности, отказоустойчивости и масштабируемости в Редис удобно хранить данные сессий. Например, содержание корзин пользователей в интернет-магазине или части HTML-кода страниц.
- Машинное обучение. Redis хранит информацию в скоростном хранилище. Это хранилище данных работает по принципу ОЗУ в компьютере. Оно позволяет быстро обрабатывать большие объемы данных и автоматизировать принятие решений.
- Хранение промежуточных данных, например из форм голосования или таблиц со сбором результатов.
- Хранение «быстрых» данных, которыми оперируют при аналитике, анализе данных, на торговых сервисах. Это подходит для решений с потоковой передачей, по типу Amazon Kinesis и Apache Kafka.
- Таблицы лидеров в играх. Структура данных Redis Sorted Set позволяет создавать ранжированные списки в режиме реального времени. Чтобы внести одно изменение, достаточно обновить результат конкретного пользователя, а не всей таблицы.
Для запуска Redis используется команда:
redis-server
Структура хранения данных Redis
Рассмотрим основные типы данных, которые поддерживает Редис-хранилище.
Строки
Как и многие другие системы управления, Редис может работать со строками. Это базовый тип данных. Максимальная длина строки в Redis — 512 МБ.
Строки чаще всего используются:
- для хранения сессий,
- для настройки очередей (например, управления заданиями или обмена сообщениями),
- сбора информации об использовании товаров и услуг в реальном времени.
Для вызова строки используется команда:
GET line_name
Вместо line_name укажите вашу строку.
Для удаления строки используется команда:
DEL line_name
Вместо line_name укажите вашу строку.
Списки
Списки — это отсортированные строки. При редактировании элементы можно добавлять как в начало, так и в конец списка, тем самым формируя задания очереди. Хранилище читает списки слева направо. Список может содержать более четырех миллиардов элементов.
С помощью команд lpush и rpush можно добавлять новые значения в начало или конец списка.
Чтобы записать значение в начало списка, выполните команду:
lpush key_name "value"
Где:
- key_name — название списка,
- value — значение, которое нужно добавить в список.
Чтобы добавить значение в начало списка, выполните команду:
rpush key_name "value"
Где:
- key_name — название списка,
- value — значение, которое нужно добавить в список.
Списки можно использовать для формирования потоков сообщений на стене или главной странице в социальных сетях, в таблицах лидеров или дашбордах с результатами голосований, а также новостных лент.
Множества
Множества позволяют выполнять сложные операции: например, пересечения и объединения. Несмотря на их неупорядоченность, такие операции проводятся быстро. Добавление или удаление элементов занимает равное количество времени. Функция SADD следит за тем, чтобы в коде не встречалось повторений. С её помощью удобно проверять значения на уникальность.
Множества могут быть полезны:
- для отслеживания уникальных IP-адресов пользователей, которые посещали сайт,
- для установки фильтров на стоп-слова в комментариях с помощью команды SET,
- для анализа поисковых запросов на конкретную категорию товаров и др.
Хэши
Хэш Redis — это таблица соответствия полей со значениями по модели «ключ-значение». Одна пара «ключ-значение» называется хэш-значением. Хэши используются для представления объектов.
Предположим, вы авторизовались в электронном журнале — в нём хранятся данные о школьной успеваемости. На экране отображается список учеников и их оценки за контрольную работу. Если представить этот список в формате полей и значений, поле — это фамилия ученика, а значение — оценка. В качестве хэш-значения здесь выступает информация об одном ученике, а в качестве хэша — список учеников с их оценками.
В Redis хэш-таблицы могут хранить 2³²-1 пар вида «ключ-значение». Это более 4 миллиардов хэш-значений.
Все возможности, а также работа с командами подробно описаны в официальной документации.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊