Управление хэшами в Redis
Ubuntu | Комментировать запись
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: NoSQL, Redis, Ubuntu, Ubuntu 18.04