Управление хэшами в Redis

Redis – это открытое in-memory хранилище данных типа «ключ-значение».

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

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

Как работать с этим мануалом

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

Команды, использованные в этом мануале, были протестированы на сервере Ubuntu 18.04 и экземпляре Redis версии 4.0.9. Чтобы настроить аналогичную среду, вы можете следовать разделу 1 руководства Установка и защита Redis в Ubuntu 18.04. Мы покажем, как эти ведут себя команды в redis-cli, интерфейсе командной строки Redis. Обратите внимание, что если вы используете другой интерфейс Redis — например, Redli – то вывод некоторых команд будет отличаться.

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

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

hset poet:Verlaine nationality French

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

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

(integer) 1

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

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

hset poet:Verlaine nationality Francais

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

(integer) 0

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

hsetnx poet:Verlaine nationality French
(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
"Francais"

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

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

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

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

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

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

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

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

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

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

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

hlen poet:Verlaine
(integer) 4

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

hstrlen poet:Verlaine nationality

(integer) 8

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

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

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

hdel poet:Verlaine born died
(integer) 2

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

Заключение

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

Читайте другие мануалы по Redis в нашем Информатории. Следующий мануал посвящен устранению неполадок.

Tags: , , ,