Как управлять хешами в Redis
Введение
хэш – это тип данных, представляющий сопоставление между строковым полем и строковым значением. Хэши могут содержать множество пар поле-значение и не занимают много места, что делает их идеальными для представления объектов данных. Например, хэш может представлять клиента и включать такие поля, как name
, address
, email
или customer_id
.
В этом руководстве мы обсудим, как управлять хэшами в Redis, от их создания до извлечения и удаления данных, содержащихся в хеше.
Как пользоваться этим руководством
Это руководство написано в виде шпаргалки с самостоятельными примерами. Мы рекомендуем вам перейти к любому разделу, имеющему отношение к задаче, которую вы пытаетесь выполнить.
Команды, показанные в этом руководстве, были протестированы на сервере Ubuntu 22.04 с Redis версии 6.0.16. Чтобы настроить аналогичную среду, вы можете, например, выполнить шаг 1 нашего руководства по Redli — точный вывод некоторых команд может отличаться.
Кроме того, вы можете предоставить управляемый экземпляр базы данных Redis для тестирования этих команд, но обратите внимание, что в зависимости от уровня контроля, разрешенного вашим поставщиком базы данных, некоторые команды в этом руководстве могут работать не так, как описано. Чтобы подготовить управляемую базу данных DigitalOcean, следуйте нашей настройке туннеля TLS, чтобы подключиться к управляемой базе данных через TLS.
Создание хэшей
Чтобы создать хэш, выполните команду hset
. Эта команда принимает имя ключа хеша, строку поля и соответствующую строку значения в качестве аргументов:
- hset poet:Verlaine nationality French
Примечание. В этом и следующих примерах poet:Verlaine
является хеш-ключом. Точки, тире и двоеточия обычно используются, чтобы сделать клавиши и поля, состоящие из нескольких слов, более удобочитаемыми. Полезно убедиться, что ваши ключи соответствуют согласованному и удобочитаемому формату.
hset
возвращает (integer) 1
, если указанное поле является новым и значение было установлено правильно:
Output(integer) 1
Однако если вы не укажете значение, поле или имя для ключа хеша, hset
вернет ошибку.
Также обратите внимание, что hset
перезапишет содержимое хеша, если он уже существует:
- hset poet:Verlaine nationality Francais
Если поле уже существует и его значение было успешно обновлено, hset
вернет (integer) 0
:
Output(integer) 0
Вы также можете использовать hsetnx
для добавления полей в хэши, но это будет работать, только если поле еще не существует. Если указанное поле уже существует, hsetnx
не будет иметь никакого эффекта и вернет (integer) 0
:
- hsetnx poet:Verlaine nationality French
Output(integer) 0
Чтобы установить несколько пар поле/значение в заданный набор, используйте команду hmset
, за которой следуют соответствующие строки поля/значения:
- hmset poet:Verlaine born 1844 died 1896 genre Decadent
hmset
вернет OK
в случае успеха.
Получение информации из хэшей
Вы можете определить, существует ли поле для данного хеша с помощью команды hexists
:
- hexists poet:Verlaine nationality
hexists
вернет (integer) 1
, если поле существует, и (integer) 0
, если его нет.
Чтобы вернуть значение поля, запустите команду hget
, затем введите решетку и поле, значение которого вы хотите получить:
- hget poet:Verlaine nationality
Output"Francais"
hmget
использует тот же синтаксис, но может возвращать значения нескольких полей:
- hmget poet:Verlaine born died
Output1) "1844"
2) "1896"
Если хэш, который вы передаете hget
или hmget
, не существует, обе команды вернут (nil)
:
- hmget poet:Dickinson born died
Output1) (nil)
2) (nil)
Чтобы получить список всех полей, содержащихся в определенном хеше, выполните команду hkeys
:
- hkeys poet:Verlaine
Output1) "nationality"
2) "born"
3) "died"
4) "genre"
И наоборот, запустите hvals
, чтобы получить список значений, содержащихся в хеше:
- hvals poet:Verlaine
Output1) "French"
2) "1844"
3) "1896"
4) "Decadent"
Чтобы получить список всех полей, содержащихся в хеше, и связанных с ними значений, запустите hgetall
:
- hgetall poet:Verlaine
Output1) "nationality"
2) "French"
3) "born"
4) "1844"
5) "died"
6) "1896"
7) "genre"
8) "Decadent"
Вы можете узнать количество полей в хэше, запустив hlen
, что означает «длина хеша»:
- hlen poet:Verlaine
Output(integer) 4
Вы можете найти длину строки значения, связанной с полем, с помощью hstrlen
, что означает «длина строки хеша»:
- hstrlen poet:Verlaine nationality
Output(integer) 8
hlen
вернет (integer) 0
, если хэш не существует.
Удаление полей из хэшей
Чтобы удалить поле из хеша, выполните команду hdel
. hdel
может принимать несколько полей в качестве аргументов и возвращает целое число, указывающее, сколько полей было удалено из хеша:
- hdel poet:Verlaine born died
Output(integer) 2
Если вы передадите несуществующее поле в hdel
, оно проигнорирует это поле, но удалит любые другие указанные вами существующие поля.
Заключение
В этом руководстве подробно описывается ряд команд, используемых для создания хэшей и управления ими в Redis. Если есть другие связанные команды, аргументы или процедуры, о которых вы хотели бы узнать в этом руководстве, спрашивайте или делайте предложения в комментариях.
Для получения дополнительной информации о командах Redis ознакомьтесь с нашей серией руководств по управлению базой данных Redis.