Введение
В этой лабораторной работе вы изучите основные методы управления данными в Redis. Вы начнете с освоения атомарных команд INCR и DECR для увеличения и уменьшения числовых значений, что идеально подходит для реализации счетчиков и ограничителей частоты запросов (rate limiters). Вы подключитесь к серверу Redis через redis-cli, зададите начальные значения, выполните операции изменения и проверите результаты с помощью команды GET.
Кроме того, вы узнаете, как извлекать список всех ключей, хранящихся в Redis, используя команду KEYS.
Увеличение и уменьшение значений с помощью INCR/DECR
На этом этапе вы научитесь увеличивать и уменьшать числовые значения в Redis с помощью команд INCR и DECR. Эти команды являются атомарными, что гарантирует их выполнение без вмешательства других клиентов, поэтому они отлично подходят для задач вроде счетчиков.
Сначала подключимся к серверу Redis через терминал с помощью команды redis-cli:
redis-cli
Теперь установим ключ mycounter с начальным значением 10. Это создаст пару ключ-значение в базе данных Redis.
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) с большими объемами данных, так как она может заблокировать сервер на время перебора всех ключей.
Сначала подключитесь к серверу 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 * на большой базе данных может негативно повлиять на производительность. Для продакшн-сред рассмотрите использование команды SCAN, которая перебирает ключи без блокировки сервера.
В завершение выйдите из redis-cli:
exit
Проверка типа данных с помощью TYPE
На этом этапе вы научитесь определять тип данных ключа в Redis с помощью команды TYPE. Redis поддерживает различные типы данных, включая строки, списки, множества, отсортированные множества и хеши. Понимание типа данных ключа критически важно для выполнения корректных операций.
Сначала подключитесь к серверу Redis через redis-cli:
redis-cli
На предыдущих этапах вы создали несколько ключей с разными значениями. Давайте проверим их типы.
Сначала проверим тип ключа mycounter:
TYPE mycounter
Вывод:
string
Это означает, что mycounter хранится как строка, даже если он содержит числовое значение. Redis автоматически преобразует числа в строки при использовании SET.
Теперь проверим тип ключа user:1000:name:
TYPE user:1000:name
Вывод:
string
Это также подтверждает, что user:1000:name хранится как строка.
Теперь проверим тип несуществующего ключа, например nonexistentkey:
TYPE nonexistentkey
Вывод:
none
Это означает, что ключ отсутствует в базе данных.
Для дальнейшей демонстрации создадим список:
LPUSH mylist "item1"
LPUSH mylist "item2"
Теперь проверим тип mylist:
TYPE mylist
Вывод:
list
Это подтверждает, что mylist хранится как список.
Аналогично можно создавать другие типы данных, такие как множества, отсортированные множества и хеши, и проверять их через 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. Эта команда полезна для сброса состояния базы данных во время разработки или тестирования. Используйте эту команду с осторожностью в производственных средах, так как она безвозвратно удаляет все данные в базе.
Сначала подключитесь к серверу 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, чтобы избежать непреднамеренной потери данных.
В завершение выйдите из redis-cli:
exit
Резюме
В этой лабораторной работе вы изучили фундаментальные методы управления данными в Redis. В частности, вы попрактиковались в увеличении и уменьшении числовых значений с помощью атомарных команд INCR и DECR, которые полезны для реализации счетчиков и ограничителей частоты запросов. Вы также узнали, что если ключ не существует, эти команды воспринимают его значение как 0.
Кроме того, вы познакомились с командой KEYS для получения списка всех ключей в Redis. Хотя она полезна для разработки и отладки, ее использование не рекомендуется в продакшн-средах с большими объемами данных. Наконец, вы научились проверять типы данных и очищать базу данных.


