Redis используют Airbnb, Slack, Twitter и Uber, а в недавнем
опросе Stack Overflow Developer Survey 2019 первое место в категории самая любимая БД разработчиков с показателем 71,3% занял именно Redis. На платформе Яндекс.Облако сервис
Yandex Managed Service for Redis доступен в публичном режиме с апреля. Рассказываем о причинах популярности, планах развития и возможности начать пользоваться со скидкой.
Что умеет Redis
Redis — это система управления БД класса NoSQL. Название является сокращением от remote dictionary server, то есть это сервер словарей, работающий со структурами данных типа «ключ — значение». Система целиком работает в оперативной памяти, но при этом умеет сохранять данные на диск, написана на Си и является решением с открытым исходным кодом. Важно, что Redis очень быстрый, многие операции хорошо оптимизированы и работают константное время. Система легко справляется с нагрузкой в несколько сотен тысяч запросов в секунду. Сейчас Redis чаще всего используется в качестве хранилища. Одно из главных преимуществ по сравнению с Memcached, которое используется для кэширования данных в оперативной памяти, — поддержка множества интересных структур данных, для которых доступны богатые API. Например, можно хранить координаты и делать запрос по радиусу. Также в списке структур данных:
- Строки
- Словари
- Списки
- Множества
- Сортированные множества
- Битовые маски
- Геоданные
- Потоки
- HyperLogLog
С точки зрения функциональности в первую очередь стоит отметить персистентость, о которой мы скажем ниже. Система поддерживает асинхронную репликацию, атомарные изолированные транзакции и пакетную обработку команд. Redis дает возможность задавать произвольное время жизни ключей и настраивать политики вытеснения ключей, что будет полезно, когда вы достигли лимита памяти. В системе реализован фреймворк типа издатель/подписчик, можно прямо в запросе посылать Lua-скрипты или использовать их как хранимые процедуры, а также есть возможность подключать расширения.
Redis в подаче Яндекса
Yandex Managed Service for Redis использует последнюю версию 5.0.4, все критически важные обновления устанавливаются своевременно. Реализованы Multi-AZ репликация (Cross-Datacenter) и автоматический failover на основе стандартного решения Sentinel. Также Sentinel используется как сервер конфигураций: клиент подключается к Sentinel и узнает, где сейчас текущий мастер. Yandex Managed Service for Redis позволяет создавать БД в нескольких конфигурациях:
- Одноузловая (по умолчанию) — для реализации кэша или работы с не критически важными данными, например, постоянно обновляемыми счетчиками.
- Автоматический отказоустойчивый кластер (от 3 хостов), когда требуется гарантия надежности работы.
По умолчанию в Yandex Managed Service for Redis заданы некоторые
ограничения:
- Maxmemory=75% RAM: 25% памяти зарезервированы под служебные процессы, различные агенты, клиентские буферы.
- Rep-backlog-size=10% RAM: для кластера из нескольких хостов 10% памяти аллоцируется под буфер репликации, чтобы реплики успевали синхронизироваться с мастером. Яндекс берет на себя заботу о безопасности сервисов, и в Yandex Managed Service for Redis ей также уделено усиленное внимание, в связи чем на каждом хосте установлен firewall, используется AppArmor и стандартная аутентификация по паролю, запрещены некоторые опасные команды. На данный момент доступ дается только из виртуальной сети, которая была указана при создании, также возможен доступ по FQDN.
Yandex Managed Service for Redis для пользователя
Два самых популярных сценария использования Redis — это кэш, который помогает основному бэкэнду хранилища справляться с нагрузкой, либо хранилище сессий состояний. Но мы бы хотели обратить внимание и на такие сценарии, как брокер сообщений, сервер очередей, таблица лидеров, хранилище геоданных. В зависимости от потребностей клиентам Yandex Managed Service for Redis доступны два вида хостов:
- Burstable (2/4 Гб) с низкими гарантиями ресурсов для сценариев, не предполагающих отказоустойчивости, например, для тестирования.
- High-Memory (8-256 Гб) специальные классы хостов, которые оптимизированы по памяти, созданные для Redis.
Yandex Managed Service for Redis позволяет удобно масштабироваться, увеличивая или уменьшая flavor в несколько кликов.
Из настроек в настоящий момент пользователи могут менять только две:
- Политика вытеснения ключей (eviction-policy) — важна в сценарии реализации кэша, позволяет выбирать наименее часто используемые ключи, случайные, последние и т. п.
- Тайм-аут для спящих клиентов (timeout).
В веб-консоли Yandex Managed Service for Redis можно наблюдать за ключевыми метриками, отслеживать потребление ресурсов, количество подключенных клиентов, живость хостов. Отдельно показано потребление ресурсов каждого хоста.
Автоматическое
резервное копирование осуществляется раз в сутки ночью, глубина хранения составляет 7 дней. Предусмотрена возможность выполнения резервного копирования по требованию. Бэкап представляет собой зашифрованный RDB-snapshot, который можно восстановить в новом кластере.
Планы по развитию функциональности Yandex Managed Service for Redis
Команда Yandex Managed Service for Redis постоянно работает над улучшением возможностей сервиса. В планах развитие средств диагностики, повышение удобства использования, более тонкая настройка кластера (помимо политики вытеснения ключей), гибкая работа с бэкапами, SSL/TSL шифрование. Уже в работе отказоустойчивая конфигурация с двумя хостами, а также поддержка Redis Cluster, который позволяет горизонтально масштабировать Redis не только на чтение, но и на запись.
Совет
Начните знакомство с Yandex Managed Service for Redis с изучения
документации.
Вы можете получить скидку до 40% на пользование Yandex Managed Service for Redis в течение целого года. Как это сделать,
читайте здесь.