Как использовать команду HSCAN в Redis?

Я хочу использовать команду Redis HSCAN в своем назначении, но я не знаю, как она работает. Официальная страница Redis ( http://redis.io/commands/hscan) для этой команды дает мне пустую страницу.

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

Я использую следующую команду, чтобы сохранить мои данные

HMSET myhash ordertype "neworder" order_ts "1234" act_type "order_ack" ack_ts "1240"
HMSET myhash2 ordertype "neworder" order_ts "2234" act_type "order_ack" ack_ts "2240"

Кто-нибудь может дать мне несколько примеров, как использовать HSCAN?

В моем случае я хотел бы получить следующий вывод
1) михаш
2) myhash2
3) myhash3
,
,
,
,

2 ответа

команды

Начать полное сканирование хеша с:

HSCAN myhash 0

Запустите сканирование хэша с полями, соответствующими шаблону с:

HSCAN myhash 0 MATCH order_*

Запустите сканирование хэша с полями, совпадающими с шаблоном, и вынудите команду сканирования выполнить дополнительное сканирование с помощью:

HSCAN myhash 0 MATCH order_* COUNT 1000

Заметка

Не забывайте, что MATCH может возвращать мало или не элемент для каждой итерации, как объяснено в документации:

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

И именно поэтому вы можете использовать COUNT заставить больше сканирования для каждой итерации.

[Обновление] Как указал Didier Spezia, вам понадобится Redis 2.8+ для использования команд *SCAN.

Как упомянуто вами. вам нужно получить выходные данные хеш-ключей

myhash
myhash2
myhash3

HSCAN не для этого. HSCAN должен сканировать поля определенного HASH. так что вы можете сканировать поля myhash или myhash2. Но если вы хотите найти ключи на основе шаблонов, у вас есть два варианта.

Создать набор с ключами HASH

SADD hashkeys "myhash" "myhash1" "myhash2"

SMEMBERS hashkeys
    1) "myhash"
    2) "myhash2"
    3) "myhash1"

If you are using 2.8 I would recommend you use sscan instead of smembers

sscan hashkeys 0 match my*

ИСПОЛЬЗУЙТЕ ТОЛЬКО SCAN КОМАНДУ

scan 0 MATCH myhash* count 1000 

ИСПОЛЬЗОВАТЬ ключ совпадения (НЕ РЕКОМЕНДУЕТСЯ, так как он заблокирует сервер Redis)

keys myhash*

Таким образом, для извлечения ключей вы можете использовать SMEMBERS, SSCAN или KEYS. Конечно, лучше всего SSCAN, если вы используете Redis 2.8

Другие вопросы по тегам