Redis, найти по га sh, найти по значению поля - PullRequest
0 голосов
/ 11 апреля 2020

Я хочу создать хэши с информацией о книгах в Redis, например:

HMSET books key "83-7197-669-0" title "Access. DB desing" price 79.0 publisher "Helion" year 2002 HMSET books key "83-7197-786-7" title "Access XP" price 65.0 publisher "Helion" year 2003

Затем я просто хочу найти книгу с ключом 83-7197-669-0, я попробовал:

1) HGET books key "83-7197-669-0" (error) ERR wrong number of arguments for 'hget' command

2) HGETALL books 1) "key" 2) "83-7197-786-7" 3) "title" 4) "Access XP" 5) "price" 6) "65.0" 7) "publisher" 8) "Helion" 9) "year" 10) "2003" Не знаю почему, но я вижу здесь только вторую книгу ..

Далее я хотел найти книга с заданной ценой, но безуспешно Я даже не знаю, что попробовать. Любые идеи?

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Как вы, вероятно, видите, у вас есть все эти атрибуты, такие как "key" и "title" в вашем Redis ha sh.

Решение простое, просто опустите ключ и сохраните оставшиеся данные в сериализованной форме. Redis - это, в основном, хранилище значений ключей на стероидах, поэтому установите первую команду на

HMSET "83-7197-669-0" title <title> price <price> ...

В зависимости от вашего варианта использования вы также можете использовать hset, хранить все в books и кодируйте значения как одну сериализованную запись.

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

1 голос
/ 11 апреля 2020

HSET в redis похож на MAP of MAP, где книги в вашем примере - это ключ внешней карты, где key, title, price, а другие поля - как ключи внутренней карты.

To Получить книгу по ключу, вы можете установить key в качестве имени HSET, и использовать HGET key, чтобы получить книгу по ключу.

HMSET books:83-7197-669-0 title "Access. DB desing"  price 79.0 publisher "Helion" year 2002

HGETALL books:83-7197-669-0

должен вернуть все поля HSET. Надеюсь, это даст вам хорошее начало для перерисовки Хэша.

...