Купить Корзина
  • Домены и сайты
  • Облако и IT-инфраструктура
  • Вход

Получить консультацию

Ответим на вопросы, расскажем о конфигурациях, поможем с переносом, подберем оборудование, подготовим коммерческое предложение

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

Персональный менеджер ответит на ваши вопросы и проведет через все этапы заключения договора: — подберет оборудование — сформирует коммерческое предложение — поможет с миграцией сервера к нам

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

Или просто оставьте номер телефона, и мы перезвоним вам

  • Телефон в Москве

    +7 495 580-11-11
  • Бесплатный звонок по России

    8 800 555-34-78
  • Или обратитесь в наши офисы

    Региональные номера
    1. База знаний
    2. Рег.облако
    3. Облачные серверы
    4. Установка программного обеспечения
    5. Как управлять ключами и базами данных Redis

    Как управлять ключами и базами данных Redis

    В этой статье мы расскажем о том, что такое Redis, а также рассмотрим команды для работы с ней.

    Что такое Redis

    Redis (Remote Dictionary Server) — это нереляционная (NoSQL) система управления базами данных. Ее первую версию представил разработчик Сальваторе Санфилиппо 10 мая 2009 года.

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

    Помимо высокой производительности, система управления базами данных Redis обладает дополнительными преимуществами:

    • Поддержка различных структур данных. Часто СУБД работают с ограниченным числом типов данных. Однако это не относится к Редис: она поддерживает битовые массивы, строки, хэши, потоки, списки, гиперлоги, JSON и др.
    • Масштабируемость. Redis позволяет настроить кластерную архитектуру, а также выбирать размер и наращивать мощности каждого из кластеров: можно воспользоваться вертикальным или горизонтальным масштабированием.
    • Высокая функциональность. При помощи Redis можно создать сложный код с простой структурой для работы с данными. СУБД Редис поддерживает такие языки, как Java, JavaScript, PHP, C++, Python, Node.js, Ruby, Go и многие другие.
    • Поддержка асинхронной репликации. Благодаря этой функции в Redis можно копировать информацию на несколько взаимосвязанных серверов одновременно. Это позволяет равномерно распределить запросы между серверами в сети и увеличить скорость чтения и восстановления данных.
    В чем отличие синхронной и асинхронной репликации

    Репликация — это процесс, во время которого синхронизируются несколько копий (реплик) одного объекта. В нашем случае объект — это база данных.

    Если вы обновили фрагмент данных в одной из копий, при синхронной репликации такие же фрагменты во всех копиях обновляются во время одной транзакции. Однако если речь идет об асинхронной репликации, изменения в реплике полностью сохраняются спустя некоторое время, в разных транзакциях.

    Для каких целей используется Redis

    Как правило, СУБД Redis используют для следующих целей:

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

    Типы данных в Redis

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

    String

    String (строка) — это базовый и наиболее часто используемый тип данных в Redis. Строки могут содержать текст, числа или двоичные данные, такие как изображения. Они поддерживают множество операций: вы можете установить значение с помощью команды SET, получить значение с помощью команды GET, увеличить числовое значение при помощи INCR и многое другое.

    Пример:

    SET key "Hello, Redis!"
    GET key

    Для удаления строки в Redis используйте команду delete key:

    DEL key

    List

    List (список) представляет собой упорядоченные последовательности элементов. Списки подходят для создания очередей, журналов событий или хранения последовательностей данных. Элементы можно добавлять в начало или конец списка:

    LPUSH mylist "item1" #добавляет элемент в начало списка
    RPUSH mylist "item2" #добавляет элемент в конец списка

    Set

    Set (Множество) — это неупорядоченная коллекция уникальных элементов. Они подходят для задач, где важна проверка наличия элемента или поиск пересечений. Элементы добавляются в Redis с помощью команды add key:

    SADD myset "item1"

    Для получения всех элементов используйте команду:

    SMEMBERS myset

    Удалить элемент в Redis можно с помощью команды remove key:

    SREM myset "item1"

    Sorted Set

    Упорядоченные множества (Sorted Set) похожи на множества, но дополнительно каждому элементу присваивается оценка (score), определяющая порядок. Это полезно для хранения данных, таких как рейтинги или временные метки. Основные команды: добавление (ZADD), получение диапазонов (ZRANGE) и удаление (ZREM):

    ZADD myzset 10 "item1"
    ZRANGE myzset 0 -1 WITHSCORES
    ZREM myzset "item1"

    Hash

    Hash (Хэш) — это коллекция пар поле-значение. Хэши удобны для хранения объектов с фиксированным набором атрибутов, например, информации о пользователях.

    Для добавления или обновления значения полей используйте команду:

    HSET myhash field1 "value1"

    Для получения значения используйте команду:

    HGET myhash field1

    Удалить хэш можно с помощью команды:

    HDEL myhash field1

    Битмапы и гиперлоглоги

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

    SETBIT mybitmap 7 1
    GETBIT mybitmap 7

    Гиперлоглоги (HyperLogLogs) предназначены для приблизительного подсчета уникальных элементов в больших наборах данных с минимальным использованием памяти. Для добавления и подсчета используйте команды PFADD и PFCOUNT:

    PFADD myhyperloglog "item1"
    PFCOUNT myhyperloglog

    Что такое модель «ключ-значение»

    Для корректной работы каждая база данных Redis использует модель «ключ-значение». Что означает каждое из этих понятий?

    Значение — это данные, которые хранятся в базе. Это могут быть строки, списки, множества, хэши и многое другое.

    Ключ — это уникальный идентификатор в базе данных, который присваивается каждому значению в базе.

    Предположим, что вы заполняете файл со списком сотрудников. Скорее всего, каждой фамилии в нем присваивается порядковый номер. Это выглядит следующим образом:

    1
    Александров
    2
    Борисов
    3
    Васильев

    Если представить этот список как базу данных в формате «ключ-значение», то:

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

    Управлять целыми базами данных и отдельными ключами из нее можно с помощью командной строки. Чтобы открыть консоль Redis, используется команда:

    redis-server

    Ниже мы приложили шпаргалку, чтобы вы могли выполнять основные операции в консоли.

    Управление базами данных в Redis

    Стандартный экземпляр Redis поддерживает 16 баз данных, которые отделены друг от друга. Это значит, что запуск одной БД не влияет на остальные базы.

    Чтобы выбрать базу данных и начать работу с ней, используется следующая команда:

    select XX

    Вместо XX укажите номер базы данных в диапазоне от 0 до 15.

    Функционал Redis позволяет скопировать данные в одной БД и добавить их в другую базу с заменой старой информации. Выполнить эту операцию поможет специальная команда:

    swapdb X Y

    Где:

    • X — номер той базы данных, из которой нужно скопировать данные, в диапазоне от 0 до 15;
    • Y — номер базы данных, в которую нужно добавить данные, в диапазоне от 0 до 15.

    Чтобы создать бэкап базы данных в формате .rdb, используйте команду:

    save

    Обратите внимание: эта команда выполняется синхронно и блокирует все клиенты, которые подключены к базе данных. Если вы создаете бэкап в производственной среде, рекомендуем выполнить другую команду.

    Команда, аналогичная save:

    bgsave

    Она выполняется асинхронно и подходит для выполнения в любых условиях.

    Управление ключами в Redis

    Каждый ключ в базе данных Redis связан с определенным значением — то есть содержимым ячейки. Для работы с ними существует большое количество команд.

    Например, переименовать ключ можно с помощью следующей команды:

    rename old_key_name new_key_name

    Где:

    • old_key_name — прежнее название ключа,
    • new_key_name — новое название ключа.

    Если команда выполнена корректно, на экране отобразится сообщение OK.

    Чтобы получить случайный ключ из выбранной базы данных, используется команда:

    randomkey

    В выводе команды отобразится имя случайного ключа.

    Чтобы узнать, данные какого типа содержатся в ключе, выполните команду:

    type key_name

    Вместо key_name укажите имя ключа.

    Если команда выполнена успешно, на экране отобразится один из типов данных: string, list, hash, set, zset, или stream. Если ключа не существует, в выводе будет указано none.

    Чтобы перенести ключ из выбранной базы данных в другую, используйте следующую команду:

    move key_name X

    Где:

    • key_name — имя ключа, который нужно переместить;
    • X — номер базы данных, в которую нужно переместить ключ, в диапазоне от 0 до 15.

    После выполнения команды на экране отобразится OK.

    Чтобы удалить ключи, используйте команду:

    del key_name

    Вместо key_name укажите имя ключа.

    Если вам нужно удалить несколько ключей, укажите их через пробел:

    del key_name _1 key_name _2

    Где:

    • key_name _1 — имя первого ключа,
    • key_name _2 — имя второго ключа.

    Существует команда, которая аналогична del. Она так же используется для удаления ключей, однако действует асинхронно:

    unlink key_name

    Вместо key_name укажите имя ключа.

    Чтобы переместить ключ в другой экземпляр Redis, выполните команду:

    migrate 123.123.123.123 1234 key_name X 1000

    Где:

    • 123.123.123.123 — IP-адрес сервера, на который нужно переместить ключ;
    • 1234 — порт для подключения к целевой базе данных;
    • key_name — имя ключа;
    • X — номер целевой базы данных в диапазоне от 0 до 15;
    • 1000 — максимальное время простоя между двумя серверами в миллисекундах.

    Команда migrate поддерживает дополнительные опции.

    COPY — скопировать ключ, не удаляя из предыдущего экземпляра Redis. При этом условии команда будет иметь следующий вид:

    migrate 123.123.123.123 1234 key_name X 1000 [COPY]

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

    migrate 123.123.123.123 1234 key_name X 1000 [REPLACE]

    Обратите внимание: выполнение следующих команд ведет к удалению содержимого одной или всех баз данных на сервере. Перед их выполнением рекомендуем создать резервные копии тех баз, которые вы планируете удалить.

    Чтобы удалить все ключи из выбранной базы данных выполните команду:

    flushdb

    Чтобы удалить все ключи во всех БД этого экземпляра Redis, используйте команду:

    flushall

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

    Резервное копирование в Redis

    Правильная организация резервного копирования — залог безопасности ваших данных. Redis предлагает несколько инструментов для создания и восстановления резервных копий, что позволяет выбрать подходящий способ в зависимости от ваших требований.

    В Redis можно сохранять бэкапы на диск в формате .rdb (Redis Database File). Это быстрый способ создать базу данных в Redis в виде файла. Бэкап можно сделать с помощью команды:

    save

    Обратите внимание

    Эта команда выполняется синхронно и блокирует все клиенты, которые подключены к базе данных. Если вы создаете бэкап в производственной среде, рекомендуем выполнить другую команду.

    Для ручного создания бэкапов рекомендуется использовать команду:

    bgsave

    Она выполняется асинхронно и запускает фоновое сохранение данных без остановки работы сервера.

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

    save 900 1
    save 300 10
    save 60 10000

    Эти параметры означают, что Redis создает бэкап:

    • каждые 900 секунд при наличии хотя бы одного изменения,
    • каждые 300 секунд, если изменилось не менее 10 ключей,
    • каждые 60 секунд, если изменилось не менее 10000 ключей.

    Для более точного восстановления данных можно включить функцию Append Only File (AOF). Она записывает каждую операцию записи в лог-файл. Этот метод позволяет восстановить данные вплоть до последнего изменения. Для включения AOF добавьте в конфигурационный файл redis.conf параметр:

    appendonly yes

    Такой подход подходит для случаев, когда важно минимизировать риск потери данных.

    Помогла ли вам статья?

    Спасибо за оценку. Рады помочь 😊

     👍
    Специальные предложения
    • Бесплатный хостинг для сайта
    • Дешевый хостинг
    • Бесплатный VPS-сервер
    • Дешёвые VPS
    Рассылка Рег.ру

    Лайфхаки, скидки и новости об IT

    Даю согласие на получение рекламных и информационных материалов

    Домены и сайты
    • Домены
    • Хостинг
    • Создание сайтов
    • SSL-сертификаты
    • VPS и VDS серверы
    • Whois
    • Магазин доменов
    Облако
    и IT-инфраструктура
    • Облачные серверы
    • Частное облако
    • Облачное хранилище
    • Kubernetes в облаке (K8S)
    • Облачные базы данных
    • Выделенные серверы
    Полезное
    • Стоимость услуг
    • Cпособы оплаты
    • База знаний
    • Документы
    • ЭДО
    • Партнерам
    • Сообщить о нарушении
    • РБК: новости России и мира сегодня
    • Новости компаний РФ
    • РБК Инвестиции: курсы валют
    Компания
    • О компании
    • Контакты
    • Офисы
    • Новости
    • Акции и скидки
    • Блог
    • Отзывы клиентов
    8 800 555-34-78 Бесплатный звонок по России
    +7 495 580-11-11 Телефон в Москве
    • vk
    • telegram
    • ok
    • moikrug
    • youtube
    • twitter
    • Облачная платформа Рег.ру включена в реестр российского ПО Запись №23682 от 29.08.2024
    • © ООО «РЕГ.РУ»
    • Политика конфиденциальности
      Политика обработки персональных данных
      Правила применения рекомендательных технологий
      Правила пользования
      и другие правила и политики
    • Нашли опечатку?
      Выделите и нажмите Ctrl+Enter
    • Мы используем cookie и рекомендательные технологии для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера