Базовое управление данными в Redis

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этой лабораторной работе вы изучите основные методы управления данными в Redis. Вы начнете с изучения того, как увеличивать и уменьшать числовые значения с помощью атомарных команд INCR и DECR, которые подходят для счетчиков и ограничителей скорости (rate limiters). Вы подключитесь к серверу Redis с помощью redis-cli, установите начальные значения, а затем увеличите и уменьшите их, проверив результаты с помощью команды GET.

Кроме того, вы узнаете, как получить все ключи, хранящиеся в Redis, с помощью команды KEYS.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") redis/RedisGroup -.-> redis/fetch_string("Get String Value") redis/RedisGroup -.-> redis/remove_key("Delete Single Key") redis/RedisGroup -.-> redis/increment_int("Increase Integer Value") redis/RedisGroup -.-> redis/decrement_int("Decrease Integer Value") subgraph Lab Skills redis/access_cli -.-> lab-552076{{"Базовое управление данными в Redis"}} redis/fetch_string -.-> lab-552076{{"Базовое управление данными в Redis"}} redis/remove_key -.-> lab-552076{{"Базовое управление данными в Redis"}} redis/increment_int -.-> lab-552076{{"Базовое управление данными в Redis"}} redis/decrement_int -.-> lab-552076{{"Базовое управление данными в Redis"}} end

Увеличение и уменьшение значений с помощью INCR/DECR

В этом шаге вы узнаете, как увеличивать и уменьшать числовые значения, хранящиеся в Redis, с помощью команд INCR и DECR. Эти команды являются атомарными, что означает, что они гарантированно выполняются без вмешательства других клиентов, что делает их подходящими для таких задач, как счетчики и ограничители скорости (rate limiters).

Сначала давайте подключимся к серверу Redis с помощью команды redis-cli в терминале:

redis-cli

Теперь давайте установим ключ с именем mycounter в начальное значение 10. Это создает пару ключ-значение в базе данных Redis. Ключ - mycounter, а значение - 10.

SET mycounter 10

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

OK

Команда INCR увеличивает значение ключа на 1. Давайте увеличим mycounter:

INCR mycounter

Вывод будет увеличенным значением:

(integer) 11

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

GET mycounter

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

"11"

Команда DECR уменьшает значение ключа на 1. Давайте уменьшим mycounter:

DECR mycounter

Вывод будет уменьшенным значением:

(integer) 10

Опять же, проверьте значение с помощью GET:

GET mycounter

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

"10"

Если ключ не существует, INCR и DECR рассматривают его так, как если бы он содержал значение 0. Давайте попробуем увеличить несуществующий ключ с именем newcounter:

INCR newcounter

Вывод будет:

(integer) 1

Теперь проверьте значение newcounter:

GET newcounter

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

"1"

Аналогично, уменьшение несуществующего ключа будет рассматривать его как 0 и уменьшит его до -1.

DECR anothercounter

Вывод будет:

(integer) -1
GET anothercounter

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

"-1"

Наконец, выйдите из redis-cli:

exit

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

Получение всех ключей с помощью KEYS

В этом шаге вы узнаете, как получить все ключи, хранящиеся в Redis, с помощью команды KEYS. Хотя KEYS полезна для разработки и отладки, ее обычно не рекомендуется использовать в производственных средах (production environments) с большими наборами данных, поскольку она может заблокировать сервер во время итерации по всем ключам.

Сначала подключитесь к серверу Redis с помощью redis-cli:

redis-cli

На предыдущем шаге вы создали несколько ключей: mycounter, newcounter и anothercounter. Давайте добавим еще несколько ключей, чтобы сделать пример более интересным.

SET user:1000:name "John"
SET user:1000:age 30
SET user:1001:name "Jane"

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

KEYS *

Вывод будет списком всех ключей:

1) "anothercounter"
2) "user:1000:age"
3) "user:1001:name"
4) "mycounter"
5) "newcounter"
6) "user:1000:name"

Порядок ключей может отличаться.

Вы также можете использовать шаблоны для получения ключей, соответствующих определенному шаблону. Например, чтобы получить все ключи, начинающиеся с user:, используйте следующую команду:

KEYS user:*

Вывод будет:

1) "user:1000:age"
2) "user:1001:name"
3) "user:1000:name"

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

KEYS *counter*

Вывод будет:

1) "anothercounter"
2) "mycounter"
3) "newcounter"

Помните, что использование KEYS * в большой базе данных может повлиять на производительность. Для производственных сред (production environments) рассмотрите возможность использования SCAN вместо этого, который выполняет итерацию по пространству ключей неблокирующим образом.

Наконец, выйдите из redis-cli:

exit

Проверка типа данных с помощью TYPE

В этом шаге вы узнаете, как проверить тип данных ключа, хранящегося в Redis, с помощью команды TYPE. Redis поддерживает различные типы данных, включая строки (strings), списки (lists), множества (sets), сортированные множества (sorted sets) и хеши (hashes). Понимание типа данных ключа имеет решающее значение для выполнения соответствующих операций над ним.

Сначала подключитесь к серверу Redis с помощью redis-cli:

redis-cli

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

Сначала давайте проверим тип данных ключа mycounter:

TYPE mycounter

Вывод будет:

string

Это указывает на то, что mycounter хранится как строка (string), даже если он содержит числовое значение. Redis автоматически преобразует числовые значения в строки при использовании SET.

Далее, давайте проверим тип данных ключа user:1000:name:

TYPE user:1000:name

Вывод будет:

string

Это также указывает на то, что user:1000:name хранится как строка (string).

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

TYPE nonexistentkey

Вывод будет:

none

Это указывает на то, что ключ не существует в базе данных.

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

LPUSH mylist "item1"
LPUSH mylist "item2"

Теперь проверьте тип данных mylist:

TYPE mylist

Вывод будет:

list

Это подтверждает, что mylist хранится как список (list).

Аналогично, вы можете создавать другие типы данных, такие как множества (sets), сортированные множества (sorted sets) и хеши (hashes), и использовать команду TYPE для проверки их типов. Например:

SADD myset "member1"
SADD myset "member2"
TYPE myset

Вывод будет:

set
ZADD mysortedset 1 "element1"
ZADD mysortedset 2 "element2"
TYPE mysortedset

Вывод будет:

zset
HSET myhash field1 "value1"
HSET myhash field2 "value2"
TYPE myhash

Вывод будет:

hash

Наконец, выйдите из redis-cli:

exit

Очистка данных с помощью FLUSHDB

В этом шаге вы узнаете, как очистить все данные из текущей выбранной базы данных Redis с помощью команды FLUSHDB. Эта команда полезна для сброса базы данных во время разработки или тестирования. Используйте эту команду с осторожностью в производственных средах (production environments), так как она навсегда удалит все данные в базе данных.

Сначала подключитесь к серверу Redis с помощью redis-cli:

redis-cli

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

KEYS *

Вы должны увидеть список ключей, которые вы создали на предыдущих шагах, таких как mycounter, newcounter, user:1000:name и mylist.

Теперь выполните команду FLUSHDB:

FLUSHDB

Вывод будет:

OK

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

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

KEYS *

Вывод будет пустым списком:

(empty array)

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

Важно понимать, что FLUSHDB очищает только текущую выбранную базу данных. Redis поддерживает несколько баз данных (пронумерованных от 0 до 15 по умолчанию). Если вы хотите очистить все базы данных, вы можете использовать команду FLUSHALL. Однако мы не будем использовать FLUSHALL в этой лабораторной работе (lab), чтобы избежать непреднамеренной потери данных.

Наконец, выйдите из redis-cli:

exit

Итог

В этой лабораторной работе (lab) вы изучили основные методы управления данными в Redis. В частности, вы попрактиковались в увеличении и уменьшении числовых значений с помощью атомарных команд INCR и DECR, которые полезны для реализации счетчиков (counters) и ограничителей скорости (rate limiters). Вы также узнали, что если ключ не существует, эти команды обрабатывают его так, как если бы он содержал значение 0.

Кроме того, вы познакомились с командой KEYS для получения всех ключей, хранящихся в Redis. Хотя она полезна для разработки и отладки, ее обычно не рекомендуется использовать в производственных средах (production environments) с большими наборами данных (datasets). Наконец, вы узнали, как проверять типы данных и очищать базу данных.