Введение в структуры данных Redis

RedisBeginner
Практиковаться сейчас

Введение

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

Вы начнете с работы со Strings (строками), изучая, как устанавливать, получать, проверять наличие и удалять строковые значения. Затем вы перейдете к Lists (спискам), используя такие команды, как LPUSH и LRANGE. Далее вы будете управлять Sets (множествами) с помощью SADD и SMEMBERS. Наконец, вы изучите Hashes (хеши) с помощью HSET и HGET. Этот практический опыт обеспечит прочную основу для использования Redis в различных приложениях.

Работа со строками (Strings) для простых данных

В этом шаге мы рассмотрим, как использовать Redis для хранения и извлечения простых строковых данных. Redis часто используется в качестве кэша или простого хранилища key-value (ключ-значение), и строки являются самым базовым типом данных, который он предлагает.

Сначала давайте подключимся к серверу Redis с помощью инструмента командной строки redis-cli. Откройте терминал в LabEx VM (виртуальной машине). Вы должны находиться в каталоге ~/project.

Введите следующую команду для подключения к серверу Redis:

redis-cli

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

127.0.0.1:6379>

Это означает, что вы подключены к серверу Redis.

Теперь давайте установим простое строковое значение. Мы будем использовать команду SET. Команда SET принимает два аргумента: ключ и значение. Давайте установим ключ с именем mykey со значением Hello Redis:

SET mykey "Hello Redis"

Вы должны увидеть следующий вывод:

OK

Это означает, что значение было успешно установлено.

Теперь давайте получим значение с помощью команды GET. Команда GET принимает один аргумент: ключ. Давайте получим значение mykey:

GET mykey

Вы должны увидеть следующий вывод:

"Hello Redis"

Это подтверждает, что мы успешно сохранили и извлекли строковое значение в Redis.

Давайте попробуем другой пример. На этот раз давайте сохраним число как строку.

SET counter 100
GET counter

Вы должны увидеть:

"100"

Redis рассматривает это как строку, даже если она представляет собой число.

Вы также можете использовать команду EXISTS для проверки существования ключа.

EXISTS mykey

Вы должны увидеть:

(integer) 1

Это указывает на то, что ключ mykey существует. Если ключ не существует, команда вернет (integer) 0.

Наконец, давайте удалим ключ с помощью команды DEL.

DEL mykey

Вы должны увидеть:

(integer) 1

Это указывает на то, что ключ mykey был успешно удален.

Теперь, если вы попытаетесь получить значение mykey снова:

GET mykey

Вы должны увидеть:

(nil)

Это подтверждает, что ключ был удален.

Не забудьте выйти из redis-cli, чтобы ваши команды были зарегистрированы. Введите:

exit

Это вернет вас в обычное приглашение терминала.

Использование списков (Lists) с командами LPUSH и LRANGE

В этом шаге мы рассмотрим, как использовать списки Redis для хранения и извлечения упорядоченных коллекций данных. Списки Redis реализованы как связанные списки (linked lists), что делает их эффективными для добавления и удаления элементов из начала или конца списка. Мы сосредоточимся на командах LPUSH и LRANGE.

Мы продолжим использовать инструмент командной строки redis-cli. Если вы еще не подключены, откройте терминал в LabEx VM (виртуальной машине) и введите:

redis-cli

Теперь давайте создадим список и добавим в него несколько элементов с помощью команды LPUSH. LPUSH добавляет элементы слева (в начало) списка. Команда LPUSH принимает два или более аргументов: ключ списка и значение(я) для добавления. Давайте создадим список с именем mylist и добавим значения item1, item2 и item3:

LPUSH mylist item1

Вы должны увидеть следующий вывод:

(integer) 1

Это означает, что один элемент был добавлен в список. Возвращаемое значение LPUSH - это длина списка после операции.

Теперь давайте добавим остальные элементы:

LPUSH mylist item2
(integer) 2
LPUSH mylist item3
(integer) 3

Теперь давайте получим элементы списка с помощью команды LRANGE. LRANGE возвращает диапазон элементов из списка. Команда LRANGE принимает три аргумента: ключ списка, начальный индекс и конечный индекс. Индексы основаны на нулевой базе, поэтому первый элемент находится по индексу 0. Чтобы получить все элементы списка, мы можем использовать начальный индекс 0 и конечный индекс -1.

LRANGE mylist 0 -1

Вы должны увидеть следующий вывод:

1) "item3"
2) "item2"
3) "item1"

Обратите внимание, что элементы возвращаются в обратном порядке, в котором мы их добавили, потому что LPUSH добавляет элементы в начало списка.

Давайте добавим еще несколько элементов в список:

LPUSH mylist item4
LPUSH mylist item5

Теперь давайте получим первые 3 элемента списка (индексы от 0 до 2):

LRANGE mylist 0 2

Вы должны увидеть:

1) "item5"
2) "item4"
3) "item3"

Вы также можете использовать отрицательные индексы для доступа к элементам с конца списка. Например, чтобы получить последний элемент списка, вы можете использовать индекс -1:

LRANGE mylist -1 -1

Вы должны увидеть:

1) "item1"

Не забудьте выйти из redis-cli, чтобы ваши команды были зарегистрированы. Введите:

exit

Это вернет вас в обычное приглашение терминала.

Управление множествами (Sets) с помощью команд SADD и SMEMBERS

В этом шаге мы рассмотрим, как использовать множества Redis для хранения и управления неупорядоченными коллекциями уникальных элементов. Множества Redis полезны для таких задач, как отслеживание уникальных посетителей, хранение тегов или управление отношениями между объектами. Мы сосредоточимся на командах SADD и SMEMBERS.

Мы продолжим использовать инструмент командной строки redis-cli. Если вы еще не подключены, откройте терминал в LabEx VM (виртуальной машине) и введите:

redis-cli

Теперь давайте создадим множество и добавим в него несколько элементов с помощью команды SADD. SADD добавляет один или несколько элементов в множество. Команда SADD принимает два или более аргументов: ключ множества и элемент(ы) для добавления. Давайте создадим множество с именем myset и добавим элементы member1, member2 и member3:

SADD myset member1

Вы должны увидеть следующий вывод:

(integer) 1

Это означает, что один элемент был добавлен в множество. Возвращаемое значение SADD - это количество элементов, которые были добавлены в множество (исключая элементы, которые уже присутствовали).

Теперь давайте добавим остальные элементы:

SADD myset member2
(integer) 1
SADD myset member3
(integer) 1

Теперь давайте получим элементы множества с помощью команды SMEMBERS. SMEMBERS возвращает все элементы множества. Команда SMEMBERS принимает один аргумент: ключ множества.

SMEMBERS myset

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

1) "member3"
2) "member2"
3) "member1"

Давайте попробуем добавить дубликат элемента в множество:

SADD myset member1

Вы должны увидеть:

(integer) 0

Это указывает на то, что новые элементы не были добавлены, потому что member1 уже был в множестве.

Давайте добавим еще несколько элементов в множество:

SADD myset member4
SADD myset member5

Теперь давайте получим все элементы снова:

SMEMBERS myset

Вы должны увидеть что-то вроде:

1) "member5"
2) "member4"
3) "member3"
4) "member2"
5) "member1"

Порядок может быть другим.

Не забудьте выйти из redis-cli, чтобы ваши команды были зарегистрированы. Введите:

exit

Это вернет вас в обычное приглашение терминала.

Изучение хешей (Hashes) с помощью команд HSET и HGET

В этом шаге мы рассмотрим, как использовать хеши Redis для хранения и извлечения коллекций пар поле-значение. Хеши Redis полезны для представления объектов с несколькими атрибутами. Мы сосредоточимся на командах HSET и HGET.

Мы продолжим использовать инструмент командной строки redis-cli. Если вы еще не подключены, откройте терминал в LabEx VM (виртуальной машине) и введите:

redis-cli

Теперь давайте создадим хеш и добавим в него несколько полей и значений с помощью команды HSET. HSET устанавливает значение поля в хеше. Команда HSET принимает три аргумента: ключ хеша, поле и значение. Давайте создадим хеш с именем myhash и установим поле field1 в значение value1:

HSET myhash field1 value1

Вы должны увидеть следующий вывод:

(integer) 1

Это означает, что новое поле было добавлено в хеш. Возвращаемое значение HSET равно 1, если поле является новым в хеше, и 0, если поле уже существует и значение было обновлено.

Теперь давайте добавим другое поле:

HSET myhash field2 value2
(integer) 1

Теперь давайте получим значение поля с помощью команды HGET. HGET получает значение поля в хеше. Команда HGET принимает два аргумента: ключ хеша и поле. Давайте получим значение field1 в myhash:

HGET myhash field1

Вы должны увидеть следующий вывод:

"value1"

Это подтверждает, что мы успешно сохранили и извлекли пару поле-значение в хеше.

Давайте попробуем обновить значение существующего поля:

HSET myhash field1 newvalue1

Вы должны увидеть:

(integer) 0

Это указывает на то, что поле уже существовало, и его значение было обновлено.

Теперь давайте получим значение field1 снова:

HGET myhash field1

Вы должны увидеть:

"newvalue1"

Это подтверждает, что значение было обновлено.

Давайте добавим еще несколько полей в хеш:

HSET myhash field3 value3
HSET myhash field4 value4

Не забудьте выйти из redis-cli, чтобы ваши команды были зарегистрированы. Введите:

exit

Это вернет вас в обычное приглашение терминала.

Резюме

В этой лабораторной работе мы изучили основные структуры данных Redis, начиная со строк (strings). Мы узнали, как подключиться к серверу Redis с помощью redis-cli, а затем использовали команду SET для хранения строковых значений, связанных с ключами. Затем мы извлекли эти значения с помощью команды GET. Мы также увидели, как Redis обрабатывает числа, хранящиеся в виде строк.

Кроме того, мы научились создавать и манипулировать Lists (списками) с помощью LPUSH и LRANGE, управлять Sets (множествами) с помощью SADD и SMEMBERS, и изучать Hashes (хеши) с помощью HSET и HGET. Эти команды позволяют хранить и извлекать различные типы данных в Redis, что делает его универсальным инструментом для различных приложений. Не забывайте выходить из redis-cli после каждого шага, чтобы ваши команды были зарегистрированы для проверки.