Redis ( RE mote DI ctionary Server) — это расширенное хранилище данных типа «ключ-значение» NoSQL. используется в качестве базы данных, кеша и брокера сообщений. Redis известен своими быстрыми операциями чтения и записи, богатыми типами данных и расширенной структурой памяти. Он идеально подходит для разработки высокопроизводительных масштабируемых веб-приложений.
Redis — одна из самых популярных баз данных типа «ключ-значение», занимающая 4-е место по удовлетворенности пользователей базами данных NoSQL. Популярность Redis продолжает расти , и многие компании ищут разработчиков Redis на такие должности, как администратор базы данных и другие роли.
В этом руководстве мы познакомим вас с Redis и покажет вам все, что вам нужно для начала работы.
Краткий обзор этого руководства:
- Что такое Redis?
- Как установить Redis
- Типы данных Redis
- Команды Redis
- Расширенные концепции Redis
- Чему научиться дальше
- Изучите Redis простым способом
- Что такое Redis?
- Преимущества Redis
- Как установить Redis
- Типы данных Redis
- Строка
- List
- Наборы
- Сортированные наборы
- Хеш
- Добавьте Redis в свой набор инструментов
- Полное руководство по Redis
- Команды Redis
- Хранение строк в Redis
- Сохранение списков в Redis
- Хранение наборов в Redis
- Сохранение отсортированного наборы в Redis
- Сохранение хэша в Redis
- Расширенные концепции Redis
- Репликация данных в Redis
- Постоянство
- Кэширование на стороне клиента
- Что изучать дальше
- Продолжить чтение об инструментах базы данных и NoSQL
Изучите Redis простым способом
В этом кратком руководстве вы узнаете все, что вам нужно для начала работы с Redis, от типов данных до кеширования.
Полное руководство по Redis

Что такое Redis?
Redis — это хранилище структур данных в памяти с открытым исходным кодом, используемое в качестве базы данных, кеша и брокера сообщений. Redis был создан Сальваторе Санфилиппо в 2006 году и написан на C.
Это расширенное хранилище данных типа «ключ-значение» NoSQL, которое часто называют сервером структуры данных , потому что его ключи содержат строки, хэши, списки, наборы, отсортированные наборы, растровые изображения и гиперлоги. Операции чтения и записи Redis выполняются очень быстро, потому что данные хранятся в памяти. Данные также могут быть сохранены на диске или записаны обратно в память.
Поскольку Redis хранит свои данные в памяти, они чаще всего используются в качестве кеша. Некоторые крупные организации, использующие Redis, — это Twitter, GitHub, Instagram, Pinterest и Snapchat.
Преимущества Redis
- Скорость: Redis очень быстр. Он может выполнять 110 000 операций SET в секунду и 81 000 операций GET в секунду.
- Поддерживает расширенные типы данных: Redis поддерживает большинство типов данных, таких как список, набор, отсортированный набор и хеши. Это дает вам большую гибкость.
- Операции являются атомарными: Это гарантирует, что если два клиента обращаются к данным одновременно, сервер Redis получит обновленное значение.
- Универсальное применение: Redis можно использовать для кэширования, очередей обмена сообщениями и краткосрочных данных, таких как сеансы веб-приложений.
- Легко настроить: Redis легко настроить
Как установить Redis
Согласно официальной документации, рекомендуемые способ установить Redis — скомпилировать его из исходников. Сначала загрузите его с официального сайта, а затем скомпилируйте, выполнив следующие действия:
wget http://download.redis.io/redis-stable.tar.gztar xvzf redis -stable.tar.gzcd redis-stablemake
Затем вы можете протестировать свою сборку, набрав make test
. Каталог src
будет заполнен исполняемыми файлами Redis.
Рекомендуется скопировать сервер Redis и интерфейс командной строки в нужные места, используя одно из двух стратегии.
-
sudo make install
- Вручную с помощью следующих команд:
sudo cp src/redis-server/usr/local/bin/sudo cp src/redis-cli/usr/local/bin/
Оттуда запустите сервер Redis, выполнив двоичный файл redis-server
(без аргументов). Поскольку нет явных файлов конфигурации, все параметры используют внутреннее значение по умолчанию. Это лучший способ начать, если вы новичок в Redis и хотите изучить среду.
Чтобы использовать Redis из вашего приложения, загрузите и установите клиентскую библиотеку Redis на основе на языке программирования, который вы хотите использовать.
Типы данных Redis
Redis — это хранилище ключей и значений, но оно поддерживает многие типы структур данных в виде значений, отличных от строк. . Ключ в Redis представляет собой двоично-безопасную строку с максимальным размером 512 МБ.
Давайте обсудим типы данных, которые поддерживаются в значениях.
Строка
Строка в Redis — это последовательность байтов. Они безопасны для двоичного кода, поэтому имеют известную длину, которая не определяется какими-либо завершающими символами. Вы можете хранить до 512 мегабайт в строке Redis. Он может хранить данные любого типа, такие как текст, целые числа, числа с плавающей запятой, видео, изображения или аудиофайлы.
redis 127.0.0.1:6379> SET name "education" OK redis 127.0.0.1:6379> GET имя "образовательный"
В этом примере SET
и GET
— это команды Redis, о которых мы поговорим позже. name
— это ключ, а Educative
— это строковое значение, которое мы сохраняем.
List
В Redis списки — это списки строк, которые отсортированы по порядку вставки, поэтому элементы хранятся в связанном списке. Вы можете добавлять элементы как на голове, так и на хвосте.. Если нам нужно вставить элемент в список из 500 записей, это займет столько же времени, сколько и добавление элемента в список из 50 000 записей.
Вот несколько примеров операций для списка результирующие списки:
LPUSH mylist x # теперь список "x" LPUSH mylist y # теперь список "y", "x" RPUSH mylist z # теперь list - это «y», «x», «z» (на этот раз использовался RPUSH)
Наборы
Наборы в Redis — это неупорядоченные коллекции строк. Этот тип значения аналогичен списку, но в наборах не допускается дублирование, а элементы не сортируются ни в каком порядке. Вы можете добавлять или удалять члены в O ( 1 ) O (1) O (1) временная сложность.
Наборы полезны, когда мы хотим хранить данные, где важна уникальность. Например, сохранение количества уникальных посетителей веб-сайта.
Сортированные наборы
Мы можем сортировать элементы с типом значения «Сортированный набор». Каждый элемент будет связан с числом, которое мы называем счетом. Это определяет порядок.
Например, если у нас есть ключ с именем овощи
, и мы хотим сохранить морковь
и сельдерей
в качестве значения. Оценка морковь
— 10, а сельдерей
— 15. Первым будет морковь, а затем сельдерей.
Если оценка двух разных элементов одинакова, мы проверяем, какая строка лексикографически больше.
Хеш
В Redis тип хеш-значения — это пара «поле-значение». Они используются для представления объектов, но могут хранить множество элементов и полезны для других задач. Хэш занимает очень мало места, поэтому вы можете хранить миллионы объектов в небольшом экземпляре хэша.
Фактически, хэш может хранить до 2 3 2 {2} ^ { 32} 2 32 — 1 — 1 -1 пара «поле-значение», что составляет более 4 миллиардов.
Допустим, мы хотим сохранить информацию об оценках учащихся. Тема может быть ключевым. Значение может быть парой «поле-значение», где поле представляет собой имя учащегося, а значение представляет собой оценку каждого учащегося.
Вот еще один пример, чтобы познакомить вас с хешем Redis.
Пользователь HMSET: 1000 имя пользователя antirez пароль P1pp0 возраст 34HGETALL пользователь: 1000HSET пользователь: 1000 пароль 12345HGETALL пользователь: 1000
Добавьте Redis в свой набор инструментов
Получите прочную основу Redis, не просматривая видео или документацию. В этом курсе вы узнаете о различных командах, которые можно использовать для хранения различных типов структур данных.
Текстовые курсы Educative легко просматривать, и в них есть среда программирования в реальном времени, что делает обучение быстрым и эффективный.
Полное руководство по Redis
Команды Redis
Команды Redis используются для выполнения операций. Есть разные команды, которые мы можем применять к нашим различным типам данных. Ниже мы рассмотрим по одной команде для каждого типа данных, рассмотренного выше, но имейте в виду, что в Redis существует множество команд.
Хранение строк в Redis
Самая простая форма данных, которая может храниться в базе данных Redis, — это строка. Мы рассмотрим две команды, используемые для хранения и выборки записей из базы данных Redis при использовании строк.
-
SET
команда
Мы можем сохранить запись в Redis с помощью команды SET
. Это установит ключ для хранения строкового значения. Если ключ уже содержит значение, оно будет перезаписано. Он имеет следующий синтаксис:
SET keyValue
-
Команда GET
Команда GET
дает нам значение ключа. Если ключ не существует, он вернет nil
. GET
обрабатывает только строковые значения. Синтаксис:
GET key
Сохранение списков в Redis
Мы также можем хранить списки, и база данных Redis хранит их как связанный список. Когда мы вставляем новый элемент, мы можем вставить его либо в голову (крайний левый элемент), либо в хвост (крайний правый элемент). Мы рассмотрим две команды, используемые для добавления и удаления записей из головы при использовании списков.
-
LPUSH
команда:
Команда LPUSH
используется для вставки значения в начало списка. Мы можем использовать одно или несколько значений, и синтаксис следующий:
LPUSH key value
Примечание. Элементы вставляются в обратном порядке, поскольку каждый элемент выбирается и вставляется в начале.
-
Команда LPOP
Команда LPOP используется для удаления элемента из списка в начале (или слева).
Клавиша LPOP
Хранение наборов в Redis
Когда дело доходит до списка, мы допускаем дублирование элементов. Итак, если нам нужно добавить уникальные элементы, мы должны использовать набор, который хранится внутри как хеш-таблица. Это означает, что элементы хранятся случайным образом, и повторение не допускается. Давайте посмотрим на команду для добавления элемента из набора Redis.
-
SADD
command
Это позволяет нам добавлять указанные члены в набор, хранящийся в ключе. Если ключ не существует, создается новый набор.
Значение ключа SADD
Сохранение отсортированного наборы в Redis
Элементы в наборе Redis не хранятся в каком-либо порядке. Итак, если мы хотим хранить элементы в отсортированном порядке, мы можем использовать отсортированные наборы, также называемые ZSets
.
Каждому элементу должна быть присвоена оценка перед ним. вставлен. База данных Redis сортирует элементы в порядке возрастания оценок. Давайте посмотрим на команду для добавления элементов в отсортированный набор.
-
ZADD
command
Эта команда добавит элементы в отсортированный набор в базе данных Redis. Мы можем указать несколько пар очков или членов. Если член уже находится в этом отсортированном наборе, оценка обновляется, и элемент повторно вставляется в правильную позицию для сохранения оценки. Вот синтаксис:
значение показателя ключа ZADD
Сохранение хэша в Redis
В Redis значение также может быть парой «поле-значение», которую мы называем хэш-структурой данных. Давайте посмотрим на команду для сохранения хэша в Redis.
-
HMSET
command
Эта команда используется для хранения хэша в Redis. Он установит для полей соответствующие значения в хэше. Эта команда перезаписывает поля, которые уже существуют в хэше. Синтаксис этой команды:
Значение ключевого поля HMSET
При использовании Redis 4.0.0
HMSET
считается устаревшим, а предпочтительным являетсяHSET
.
Расширенные концепции Redis
Теперь, когда мы понимаем некоторые основы Redis и представили команды, давайте рассмотрим некоторые дополнительные концепции.
Важное примечание о Redis
В этом руководстве вместо терминологии Модель/Подчиненный мы будем использовать метафору прогрессивного
лидера
/последователя
. Использование нами этой терминологии не помешает вашему пониманию Redis.В официальной документации Redis используется модель Master/Slave, которая преобладала в компьютерных науках на протяжении десятилетий, начиная с 1904 года..
В последние годы многие организации предприняли значительные усилия, чтобы противостоять и заменить эту проблемную метафору.
В Educative мы верим в расширение прав и возможностей разработчиков и изменение промышленность к лучшему. Использование инклюзивной терминологии является частью этого культурного сдвига.
Если вы хотите узнать больше об этом продолжающемся обсуждении, мы рекомендуем эту статью от Wired.
Репликация данных в Redis
Когда данные хранятся на сервере и происходит сбой сервера, данные могут быть потеряны. Мы используем технику репликации данных, чтобы избежать этой проблемы. В основном это означает, что данные хранятся на двух или более серверах, чтобы предотвратить потери или сбои . Репликация данных также снижает нагрузку на наши серверы, так как запросы пользователей балансируются по нагрузке.
Redis следует подходу лидер/последователь для репликации данных на сервере. Один из серверов — это лидер
, а остальные серверы — это последователи
, которые все связаны с лидером
. Мы записываем все в лидера
, который затем отправляет изменения подписчикам
.
Если последователь
отключен, он автоматически повторно подключится и точно воспроизведет лидера
. Это можно сделать двумя способами:
- Частичная синхронизация
- Полная синхронизация
Примечание. В Redis процесс репликации асинхронный. Серверы
ведомого
асинхронно подтверждают данные отлидера
, поэтомулидер
знает, какие команды были обработаны.
Постоянство
Поскольку Redis — это база данных в памяти, данные хранятся в памяти (или ОЗУ). Если сервер выходит из строя, все сохраненные данные теряются. Redis имеет механизмы резервного копирования для данных на диске. Таким образом, данные загружаются с диска в память при перезагрузке сервера. Redis имеет два варианта сохранения:
- Сохранение RDB (моментальные снимки): моментальные снимки данных хранятся на диске в
файл dump.rdb
. Долговечность зависит от того, как часто данные выгружаются на диск. - Сохранение файла только для добавления (AOF): каждая операция записи, полученная сервером, регистрируется в файл, поэтому все команды в файле AOF снова запускаются при перезагрузке.
Кэширование на стороне клиента
Когда клиенту требуются данные, они просят сервер Redis предоставить их, что требует большой пропускной способности для каждого запроса. Мы можем кэшировать результаты для наиболее часто используемых ключей на стороне клиента, чтобы повысить производительность .
Redis обеспечивает поддержку кэширования на стороне клиента, которое называется отслеживанием. Существует два разных подхода:
- Режим по умолчанию: сервер хранит информацию о том, какой ключ хранится каким клиентом. Если ключ изменен, сервер отправляет сообщение только соответствующим клиентам.
- Режим широковещания: серверу не нужно отслеживать кэшированные ключи клиентами. Вместо этого клиенты подписываются на префиксы ключей и получают уведомления, когда используется ключ, соответствующий определенному префиксу.
Что изучать дальше
Теперь вы должны хорошо понимать, как Redis работает и что он может сделать для ваших приложений. Это мощный инструмент, популярность которого растет. Любой разработчик должен обладать солидными навыками Redis в своем арсенале инструментов. Но это еще не все.
Далее вам следует изучить:
- Разделение в Redis
- Расширенные команды
- Безопасность в Redis
- Кластеры в Redis
Для начала с этими концепциями, а также для того, чтобы попрактиковаться в командах Redis, ознакомьтесь с курсом Educative Complete Guide to Redis. Это ваше руководство по Redis. Вы узнаете о различных командах, которые можно использовать для хранения различных типов структур данных в Redis. Вы также познакомитесь с транзакциями, безопасностью, секционированием и кластеризацией.
Удачного обучения!
Продолжить чтение об инструментах базы данных и NoSQL
- MongoDB против PostgreSQL: что следует учитывать при выборе базы данных
- Что такое запрос к базе данных? Объяснение запросов SQL и NoSQL
- Краткое руководство по AWS: сервисы, которые вы обязательно должны использовать