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

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

Введение

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

Вы начнете с работы со строками, узнав, как устанавливать, получать, проверять наличие и удалять строковые значения. Затем вы перейдете к спискам, используя такие команды, как LPUSH и LRANGE. После этого вы научитесь управлять множествами с помощью SADD и SMEMBERS. Наконец, вы изучите хеши, используя HSET и HGET. Этот практический опыт создаст прочный фундамент для использования Redis в различных приложениях.

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

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

Сначала давайте подключимся к серверу Redis с помощью инструмента командной строки redis-cli. Откройте терминал в виртуальной машине LabEx. Вы уже должны находиться в директории ~/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

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

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

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

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

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

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

Управление множествами с помощью SADD и SMEMBERS

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

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

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

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

Изучение хешей с помощью HSET и HGET

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

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

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, начав со строк. Мы узнали, как подключиться к серверу Redis с помощью redis-cli, а затем использовали команду SET для сохранения строковых значений, связанных с ключами. Затем мы извлекли эти значения с помощью команды GET. Мы также увидели, как Redis обрабатывает числа, сохраненные в виде строк.

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