Введение
В этой лабораторной работе вы изучите основные методы управления данными в Redis. Вы начнете с изучения того, как увеличивать и уменьшать числовые значения с помощью атомарных команд INCR и DECR, которые подходят для счетчиков и ограничителей скорости (rate limiters). Вы подключитесь к серверу Redis с помощью redis-cli, установите начальные значения, а затем увеличите и уменьшите их, проверив результаты с помощью команды GET.
Кроме того, вы узнаете, как получить все ключи, хранящиеся в Redis, с помощью команды KEYS.
Увеличение и уменьшение значений с помощью 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). Наконец, вы узнали, как проверять типы данных и очищать базу данных.


