Это первая нереляционная СУБД в платформенных сервисах Selectel. Разбираемся, чем она хороша и кому подойдет.
Redis, или Remote Dictionary Server, — это резидентная база данных типа «ключ-значение» с открытым исходным кодом. Она занимает шестое место в рейтинге самых популярных баз данных, по версии DB-Engines.
Главное отличие Redis от «классических» MySQL или PostgreSQL — в том, что эта СУБД хранит данные в оперативной памяти и работает быстрее. Размер базы ограничен объемом ОЗУ.
Redis способна периодически сохранять данные на диск. В зависимости от выбранного правила она сделает это раз в час/секунду, при изменении N количества ключей или другом условии. Информация не потеряется при штатной перезагрузке узла, но рискует пропасть в аварийных ситуациях.
Данные в Redis хранятся по упрощенной модели «ключ-значение». Ключ служит уникальным идентификатором, через который можно получить доступ к вводу и обновлению данных.
Допустим, у нас есть база типа «ключ-значение», хранящая счетчик просмотров видео. Ключом будет цифровой идентификатор этого видео, а значением — количество просмотров. Обращаясь в базу, мы как бы говорим ей: «Дай нам число просмотров к видео #12345» или «Увеличь значение просмотров видео #12345 на единицу» .
Модель хранения «ключ-значение» тоже влияет на скорость взаимодействия с базой данных. Но важно понимать, что не любую базу можно адаптировать под нее.
Кому подойдет Redis
СУБД создана для задач, где нужен быстрый доступ к данным в режиме реального времени. Обычно эту базу данных используют как кэш-прослойку между «внешним миром» и более медленной реляционной базой. То есть у компании есть надежная PostgreSQL, MySQL или Oracle, но часть часто запрашиваемых данных выносится в Redis, чтобы повысить скорость работы пользователя с сервисом или приложением.
Нередко СУБД используют в разработке финансовых и рекламных сервисов, игровых приложений, IoT, но сферы могут быть самыми разными. Основная задача — быстрый доступ к данным.
Кому не подойдет Redis
Систему лучше не использовать как единственное хранилище данных. Любая инфраструктурная проблема — сетевая недоступность, падение системы, достижение лимита памяти — приведет к потере информации. Если это критично для бизнеса, нужно использовать Redis в связке с реляционными базами данных. Также в этой СУБД не получится работать с большими данными из-за лимитов памяти.
Сценарии использования
Кэширование данных
У компании N модный сайт с большим количеством картинок. Страницы не всегда подгружаются так быстро, как хотелось бы. Разработчики настроили кэш-прослойку в Redis. Картинки стали подгружаться без временного лага, а нагрузка на сайт и основную базу данных с изображениями снизилась.
Добавление чатов, лент новостей и контроля очереди в реальном времени
Редакция онлайн-издания Y хочет повысить вовлеченность читателей и решает добавить на сайт площадку для дискуссий и живой чат. Чтобы выдержать нагрузку, обеспечить быстрый обмен сообщениями и блокировать нежелательные месседжи, администратор сайта выбрал Redis. Теперь он может создавать упрощенные очереди сообщений и ленты комментариев.
Хранение пользовательских сессий
Компания X хочет увеличить юзабилити своего приложения, чтобы эффективнее конвертировать посетителей в клиентов. Она начала записывать и хранить данные пользовательских сессий в Redis, чтобы потом их проанализировать. Теперь каждой сессии присваивается уникальный идентификатор, по которому можно быстро получить доступ к данным и обработать их.
Ведение таблицы лидеров в играх
Компания N запустила спецпроект — мобильную игру с турнирной таблицей. Победителям обещали новый iPhone от спонсора. Рейтинг лидеров, которые на текущем этапе набрали больше всех очков, должен обновляться ежесекундно. Для этого разработчики выбрали структуру данных Redis Sorted Set — она обеспечивает уникальность элементов и сортировку списка по результатам.
Использование моделей машинного обучения
Стартап S развивает сервис по подбору съемного жилья. В системе рекомендаций учитываются данные о поведении пользователя: что он добавлял в закладки, куда кликал, его профиль, пожелания и прочее. Чтобы клиент мог быстро получать персонализированную подборку, разработчики выбрали Redis, обеспечивающий работу с алгоритмами машинного обучения.
Это лишь часть вариантов применения Redis. Больше кейсов можно найти на официальном сайте Redis Labs в разделе Redis Best Practices.
Для начала работы с облачными базами данных Redis выберите нужную конфигурацию и операционную систему в панели управления — в течение 2-3 минут вы получите кластер базы данных, с которым можно работать. Чтобы не запутаться на этом этапе, сверьтесь с инструкцией.
Облачные базы данных Redis можно использовать в связке с выделенными и облачными серверами, с кластерами Kubernetes и облачными базами данных MySQL и PostgreSQL.
До конца года сервис находится в бете — использовать его можно бесплатно. Тестируйте производительность, пока мы делаем базу более функциональной, и делитесь фидбэком в тикетах.