Поиск по сайту:

Как управлять хешами в Redis


Введение

хэш – это тип данных, представляющий сопоставление между строковым полем и строковым значением. Хэши могут содержать множество пар поле-значение и не занимают много места, что делает их идеальными для представления объектов данных. Например, хэш может представлять клиента и включать такие поля, как name, address, email или customer_id.

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

Как пользоваться этим руководством

Это руководство написано в виде шпаргалки с самостоятельными примерами. Мы рекомендуем вам перейти к любому разделу, имеющему отношение к задаче, которую вы пытаетесь выполнить.

Команды, показанные в этом руководстве, были протестированы на сервере Ubuntu 22.04 с Redis версии 6.0.16. Чтобы настроить аналогичную среду, вы можете, например, выполнить шаг 1 нашего руководства по Redli — точный вывод некоторых команд может отличаться.

Кроме того, вы можете предоставить управляемый экземпляр базы данных Redis для тестирования этих команд, но обратите внимание, что в зависимости от уровня контроля, разрешенного вашим поставщиком базы данных, некоторые команды в этом руководстве могут работать не так, как описано. Чтобы подготовить управляемую базу данных DigitalOcean, следуйте нашей настройке туннеля TLS, чтобы подключиться к управляемой базе данных через TLS.

Создание хэшей

Чтобы создать хэш, выполните команду hset. Эта команда принимает имя ключа хеша, строку поля и соответствующую строку значения в качестве аргументов:

  1. hset poet:Verlaine nationality French

Примечание. В этом и следующих примерах poet:Verlaine является хеш-ключом. Точки, тире и двоеточия обычно используются, чтобы сделать клавиши и поля, состоящие из нескольких слов, более удобочитаемыми. Полезно убедиться, что ваши ключи соответствуют согласованному и удобочитаемому формату.

hset возвращает (integer) 1, если указанное поле является новым и значение было установлено правильно:

Output
(integer) 1

Однако если вы не укажете значение, поле или имя для ключа хеша, hset вернет ошибку.

Также обратите внимание, что hset перезапишет содержимое хеша, если он уже существует:

  1. hset poet:Verlaine nationality Francais

Если поле уже существует и его значение было успешно обновлено, hset вернет (integer) 0:

Output
(integer) 0

Вы также можете использовать hsetnx для добавления полей в хэши, но это будет работать, только если поле еще не существует. Если указанное поле уже существует, hsetnx не будет иметь никакого эффекта и вернет (integer) 0:

  1. hsetnx poet:Verlaine nationality French
Output
(integer) 0

Чтобы установить несколько пар поле/значение в заданный набор, используйте команду hmset, за которой следуют соответствующие строки поля/значения:

  1. hmset poet:Verlaine born 1844 died 1896 genre Decadent

hmset вернет OK в случае успеха.

Получение информации из хэшей

Вы можете определить, существует ли поле для данного хеша с помощью команды hexists:

  1. hexists poet:Verlaine nationality

hexists вернет (integer) 1, если поле существует, и (integer) 0, если его нет.

Чтобы вернуть значение поля, запустите команду hget, затем введите решетку и поле, значение которого вы хотите получить:

  1. hget poet:Verlaine nationality
Output
"Francais"

hmget использует тот же синтаксис, но может возвращать значения нескольких полей:

  1. hmget poet:Verlaine born died
Output
1) "1844" 2) "1896"

Если хэш, который вы передаете hget или hmget, не существует, обе команды вернут (nil):

  1. hmget poet:Dickinson born died
Output
1) (nil) 2) (nil)

Чтобы получить список всех полей, содержащихся в определенном хеше, выполните команду hkeys:

  1. hkeys poet:Verlaine
Output
1) "nationality" 2) "born" 3) "died" 4) "genre"

И наоборот, запустите hvals, чтобы получить список значений, содержащихся в хеше:

  1. hvals poet:Verlaine
Output
1) "French" 2) "1844" 3) "1896" 4) "Decadent"

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

  1. hgetall poet:Verlaine
Output
1) "nationality" 2) "French" 3) "born" 4) "1844" 5) "died" 6) "1896" 7) "genre" 8) "Decadent"

Вы можете узнать количество полей в хэше, запустив hlen, что означает «длина хеша»:

  1. hlen poet:Verlaine
Output
(integer) 4

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

  1. hstrlen poet:Verlaine nationality
Output
(integer) 8

hlen вернет (integer) 0, если хэш не существует.

Удаление полей из хэшей

Чтобы удалить поле из хеша, выполните команду hdel. hdel может принимать несколько полей в качестве аргументов и возвращает целое число, указывающее, сколько полей было удалено из хеша:

  1. hdel poet:Verlaine born died
Output
(integer) 2

Если вы передадите несуществующее поле в hdel, оно проигнорирует это поле, но удалит любые другие указанные вами существующие поля.

Заключение

В этом руководстве подробно описывается ряд команд, используемых для создания хэшей и управления ими в Redis. Если есть другие связанные команды, аргументы или процедуры, о которых вы хотели бы узнать в этом руководстве, спрашивайте или делайте предложения в комментариях.

Для получения дополнительной информации о командах Redis ознакомьтесь с нашей серией руководств по управлению базой данных Redis.