Что такое Redis
- Что такое Redis
- Преимущества Redis
- Для чего применяется Redis
- Как устроена структура хранения данных в Redis
В статье мы расскажем о Redis и о том, какие данные она способна обрабатывать.
Что такое Redis
Redis (англ. REmote DIctionary Server) — это нереляционная система управления базами данных, которая написана на языке C. Любая база данных, созданная в Redis, работает по принципу “ключ-значение” (хеш-таблицы).
Linux или Windows: Redis
Преимущества Redis
Чтобы понять, зачем нужен Redis, рассмотрим его преимущества. По ним можно определить, подходит ли облачная СУБД для вашего проекта:
-
Асинхронная репликация, которая позволяет копировать информацию на взаимосвязанные серверы. Это позволяет распределить запросы равномерно между несколькими серверами и увеличить скорость чтения данных.
-
Поддержка разнообразных структур данных. Обычно СУБД работают с ограниченным количеством типов данных. Redis способен работать со многими наборами данных: строки, списки, множества, хеши и т.д. Подробнее о них расскажем ниже.
-
Масштабируемость. Редис позволяет настроить кластерную архитектуру: это позволяет приложениям работать стабильно и повышает их надежность. Кластеры поддерживают гибкую настройку по принципам горизонтального и вертикального масштабирования.
-
Функциональность. В Redis можно создать сложный и одновременно компактный код, чтобы использовать и хранить данные в БД, а также обеспечить простой доступ к ним. Это достигается за счет хеша данных. Доступные языки программирования в Redis — это Java, JavaScript, Python, Node.js, C++, PHP, Ruby, Go и другие.
-
Высокая производительность. Основные данные в Редис хранятся в кэше — это значит, что их не нужно перемещать на диск. Кэширование уменьшает задержку ядра: благодаря этому система может обрабатывать около миллиона запросов в минуту.
Для чего применяется Redis
Рассмотрим, настройка какого функционала возможна в Redis:
- Кэширование данных. Redis cache способствует снижению нагрузки на приложение, хранилище и сетевую инфраструктуру в целом. Это позволяет уменьшить расходы на оборудование, так как дополнительные ресурсы сервера не потребуются.
- Возможность работы с крупными приложениями. Редис равномерно распределяет трафик средствами асинхронной репликации. О ней мы рассказывали выше.
- Хранение сессий. Масштабируемость и отказоустойчивость позволяют Редис удобно хранить сессии пользователей: например, части HTML-кода, содержимое корзины в интернет-магазине и другое
- Хранение промежуточных данных — тех, которые накапливаются на сервере постепенно, по мере активности пользователей. Это могут быть результаты голосования из опросов или таблица со спортивными результатами на соревнованиях.
- Хранение данных на сервере для быстрой обработки. На них опираются при аналитике. Этот функционал используется для сервисов с потоковой передачей информации. Один из самых популярных примеров подобной передачи — онлайн-игры.
- Машинное обучение. Редис сохраняет информацию в скоростном хранилище. По принципу работы это хранилище данных схоже с ОЗУ в компьютере. Редис обрабатывает большой объём данных и делает принятие решений автоматическим.
- Брокер сообщений. Благодаря равномерному распределению трафика в Redis, можно снизить нагрузку на почтовые сервисы. Для отправки сообщения не потребуется много времени на ресурсозатратные операции: маршрутизацию, поиск получателя и другие.
- Создание чатов и очередей. Высокопроизводительный Редис позволяет создавать новостные ленты, обновлять ленты комментариев и чаты в режиме реального времени.
- Таблицы лидеров в играх. В СУБД можно создавать файлы ранжированных списков: чтобы изменить результат одного пользователя, не нужно править таблицу целиком.
Чтобы запустить Redis, используйте команду:
redis-server
Как устроена структура хранения данных в Redis
Рассмотрим типы данных, которые используются в Redis.
Строки
Строки — это базовый тип данных для всех СУБД, в том числе и Redis. Чаще всего их используют для таких действий, как:
-
сбор информации о покупке товаров и услуг в режиме онлайн,
-
настройка очередей: обмена сообщениями или управления заданиями,
-
хранение пользовательских сессий.
Максимальная длина строки в Редис — 512 мегабайт.
Чтобы вызвать строку, потребуется следующая команда:
GET string_name
Вместо string_name укажите нужную строку.
Для удаления строки используйте команду:
DEL string_name
Вместо string_name укажите нужную строку.
Списки
Списки — это набор отсортированных строк. При изменении списка вы можете устанавливать порядок строк, добавляя их в начало или в конец. Так вы создаете задания очереди.
Списки будут полезны при создании потоков сообщений на страницах соцсетей, в таблицах лидеров в онлайн-играх, а также для создания ленты новостей.
Чтобы добавить строку в начало списка, выполните команду:
lpush list_name “value”
Где:
-
list_name — название списка,
-
value — строка, которую нужно добавить.
Чтобы записать строку в конец списка, выполните команду:
rpush list_name “value”
Где:
-
list_name — название списка,
-
value — строка, которую нужно добавить.
Множества
Множества помогают выполнять сложные операции: пересечение элементов и их объединение. Также в Редис присутствует функция SADD, которая позволяет исключить повторы и проверить значения на уникальность.
Множества подходят для следующих задач:
-
отслеживания уникальных IP-адресов посетителей сайта,
-
настройки стоп-слов в комментариях с помощью команды SET,
-
анализа поисковых запросов.
Хеши
Хеш представляет собой таблицу соответствий формата “поле-значение”. Одно такое соответствие называется хеш-значением. Таблицы соответствия необходимы для представления объектов. Объясним на примере.
Представим, что вы открыли таблицу результатов футбольного турнира. В ней отображается список команд, которые участвовали в матчах, и полученные очки. Если смотреть на список результатов как на хеш-таблицу, ключ — это название команды, а значение — количество очков. В качестве хеш-значения здесь выступает информация об одной команде, а в качестве хеш-таблицы — сводная таблица со всеми командами.
Хеш-таблицы Redis могут включать в себя 2³²-1 хеш-значений — около четырех миллиардов пар формата “поле-значение”.
Полный список возможностей и принципы работы с Redis представлены в официальной документации.