IP-телефония

от 0 руб.

Продуманная связь

для вашего бизнеса

Корпоративные мессенджеры

от 250 руб/мес

Защищенная платформа

коммуникаций

ВКС

от 250 руб/мес

Платформа корпоративных

коммуникаций

IaaS

от 249,95 руб.

Для любых задач

Оплата pay-as-you-go

Kubernetes

От 5,95 руб / час

№1 в рейтинге провайдеров

SLA 99,98%, 152-ФЗ

IBP

по запросу

Универсальная CPM/EPM

self-service платформа

Корпоративные мессенджеры

От 200 руб/мес

Передовое

решение

  • Корпоративные мессенджеры

    от 250 руб/мес

    Защищенная платформа

    коммуникаций

  • ВКС

    от 250 руб/мес

    Платформа корпоративных

    коммуникаций

  • IaaS

    от 249,95 руб.

    Для любых задач

    Оплата pay-as-you-go

  • Kubernetes

    От 5,95 руб / час

    №1 в рейтинге провайдеров

    SLA 99,98%, 152-ФЗ

  • IBP

    по запросу

    Универсальная CPM/EPM

    self-service платформа

  • Корпоративные мессенджеры

    От 200 руб/мес

    Передовое

    решение

  • IaaS

    от 490руб./мес

    VMware / ПО РФ

    SLA 99,95% Pay-as-you-go

  • BPM

    от 12 000 руб/год

    Цифровые процессы

    с комфортом для людей

  • Low-code

    от 667 руб.

    Цифровая трансформация

    с ELMA365

IaaS

от 490руб./мес

VMware / ПО РФ

SLA 99,95% Pay-as-you-go

BPM

от 12 000 руб/год

Цифровые процессы

с комфортом для людей

Low-code

от 667 руб.

Цифровая трансформация

с ELMA365

HRM

от 8500 руб.

HCM-платформа

для автоматизации HR

IaaS

По

Облако VMware/Брест

ФЗ-152, SLA 99,99%

DBaaS

От 3,98 руб./час

№1 в рейтинге DBaaS

SLA 99,95%, 152-ФЗ, PCI DSS

IaaS

По запросу

По вашим правилам

Dedicated, SaaS/PaaS

Обзор системы управления базами данных Redis

Безопасность Бизнес Телеком Интернет Цифровизация ИТ в банках ИТ в госсекторе Ритейл Техника Маркет

Redis — популярная СУБД с открытым исходным кодом. По состоянию на 2021 – 2022 гг. входит в десятку наиболее востребованных баз данных по версии портала DB-Engines. Поддерживается работа со множеством операционных систем: macOS, Linux, BSD, есть возможность простого запуска на Windows, хотя официально эта ОС не поддерживается.

Это нереляционная NoSQL СУБД, в которой отсутствует сегментация пользователей или групп, нет полнофункционального контроля доступа: используется базовый зашифрованный пароль, отключение и переименование команд. Из-за особенностей работы она не может полностью соответствовать принципу ACID и поэтому не подойдет для проектов, в которых на первом месте стоит отказоустойчивость.

Технические особенности и принцип работы

Самое важное отличие от привычных СУБД — это способ хранения данных: они хранятся в оперативной памяти. Такой подход позволяет обеспечивать максимальную скорость доступа к информации, недостижимую в обычных СУБД, использующих для этого твердотельные накопители или жесткие диски.

Помимо этого, для обеспечения высокой скорости доступа используются упрощенная модель «ключ-значение», в которой ключ выполняет роль уникального идентификатора — с его помощью происходит доступ к работе с данными. Оба этих фактора — ОЗУ в качестве хранилища и модель «key-value» — делают Redis одной из самых быстрых СУБД.

Скорость — это превосходно, но что с надежностью? Надежность — это не менее важный показатель, когда речь заходит об обработке данных. Поскольку обеспечить надежность хранения данных в оперативной памяти очень сложно, то разработчики решили не изобретать велосипед и задействовать знакомые инструменты:

  1. Снимки — система с определенной периодичностью делает снимок и сохраняет его на энергонезависимых твердотельных накопителях. Это позволяет сохранить данные при отказе ОЗУ или откатить их к моменту снимка, если потребуется.
  2. Упреждающее журналирование — метод, при котором информация о всех действиях записывается в журнал до того, как они будут применены. Если случится какой-то сбой, то на основе этих записей можно будет установить прерванные операции и сделать повтор или отмену.

Дополнительным средством обеспечения безопасности и повышения производительности выступает репликация. В Redis доступна репликация по схеме «master/slave» — главный сервер может дублировать данные на ведомые сервера, но при этом нет механизмов для автоматического переключения и выбора в качестве «master» одного из ведомых серверов, если главный выйдет из строя. Этот недостаток можно устранить, если задействовать выделенную систему управления узлами Redis Sentinel.

В конце апреля этого года, после нескольких выпусков Release candidate, была опубликована Redis 7.0. В ней появилось множество улучшений и новшеств. Главные из них:

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

Система непрерывно развивается и улучшается, показывая стабильный рост качества и возможностей. Несмотря на то, что первый выпуск был не так давно, в 2009 г., за это время она смогла проделать серьезный путь и стать одной из самых востребованных баз данных.

Где можно использовать

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

Прослойка

Одним из довольно популярных вариантов, где может пригодиться Redis, является блэкбенд между привычной СУБД — Oracle, PostgreSQL или MySQL — и конечными потребителями. Реляционные СУБД не такие быстрые, но зато обеспечивают высокий уровень надежности, а для повышения производительности к ним обычно подключают Memcached или Redis.

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

Кеширование

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

Кеш-прослойка на основе Redis позволит устранить эту проблему и заодно повысить производительность web-портала, перенеся часть нагрузки рабочей СУБД в Redis. Совсем недавно лидером в отрасли подобных решений был Memcached, но в последнее время почти повсеместно стала использоваться Redis — это связано с тем, что она удобнее и функциональнее: есть поддержка Lua и другие преимущества.

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

Метод машинного обучения основан на обработке огромного количества информации, в частности — обучение на примерах. Для этого необходимы большие потоки различных данных, которые требуются для обучения путем «скармливания» интеллектуальной системе множества примеров, актуальных для того или иного правила. Использование привычных СУБД не позволяет добиться высокой скорости работы с данными, которая напрямую влияет на успех.

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

Общение, посетители интернет-ресурсов и рейтинги

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

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

В целом, это все простые и банальные примеры, взятые из рекомендаций. Реальный же опыт использования может быть гораздо глубже и зависит только от фантазии разработчика. Сама система написана на С, но поддерживает такие языки, как Go, Lua, Perl, PHP, Nim, Python и множество других.

Подведение итогов

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

Безопасность представлена предварительным журналированием и периодическими снимками системы, которые записываются в специальный файл, расположенный на твердотельном накопителе. Репликация позволяет распределять данные по подчиненным серверам, повышая таким образом отказоустойчивость и производительность. Предусмотрено автоматическое переназначение master-сервера, если с действующим что-то случится.

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

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

Короткая ссылка