Является ли возврат данных из Redis SETS быстрее или более быстрым, чем HSETS? - PullRequest
0 голосов
/ 07 марта 2019

В настоящее время у меня есть сценарий, в котором мы используем REDIS для хранения пар field-value строк в hashed set HSET.

Первоначальное обоснование использования хешированных наборов вместо просто наборов заключается в простоте извлечения записей с помощью HSCAN внутри панели поиска графического интерфейса, а не просто SCAN, поскольку проще получить длину хеша дляиспользуйте в поле COUNT.

В документации Redis я прочитал, что команды GET и HGET выполняются с O (1) сложностью по времени, но член моей команды считает, что если я сохранювсе значения внутри одного ключа, тогда он в основном возвращает весь хеш во время HGET вместо единственного field-value, который мне нужен.

Так что для вымышленного, но похожего примера:

  • У меня есть экземпляр Redis с одним хэшированным набором, который называется users.
  • В хэшированном наборе 150 000 field:value пар username:email

Если при выполнении hget users coolguy возвращается весь хэш или только электронное письмо для пользователя coolguy

1 Ответ

2 голосов
/ 08 марта 2019

Прежде всего, HSET не является хеш-набором, он создает хеш-таблицу. Механизм, стоящий за хэш-таблицей и набором (который на самом деле является хэш-набором) в Redis, тот же, разница состоит главным образом в том, что хэш-таблица имеет значения.

Чтобы ответить на ваш вопрос:

Если при запуске hget пользователи coolguy, возвращается ли весь хеш или только электронное письмо для пользователя coolguy?

Просто электронная почта для этого пользователя. Вы также можете использовать HMGET, чтобы получать электронные письма от нескольких пользователей одновременно. Это O (1) для каждого пользователя, которого вы выбираете, или O (n) для n пользователей.

...