Как получить индексированные ключи в определенном диапазоне в Redis? - PullRequest
0 голосов
/ 27 ноября 2018

Используя redis, допустим, у меня есть следующие ключи с индексом:

user1:0
user1:1
user1:2
user1:3
user1:4
user2:0
user2:1
user2:2

Как я могу получить ключи, скажем, для пользователя 1 из индекса 1-3?Итак, вот результаты, которые я хочу:

user1:1
user1:2
user1:3

Я попробовал эти команды и получил пустые результаты:

LRANGE user1:* 1 4
SCAN user1:* CURSOR 1 COUNT 3

Еще один вопрос: лучше ли мне будет сохранить индекскак элемент во вторичном ключе?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вы неправильно использовали команду SCAN.

SCAN 0 MATCH user1:[1-3]

Проверьте документ для подробностей.

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

Да, вы можете создать вторичный индекс для ключей, соответствующих шаблону, или попробовать redisearch .Когда ваш набор данных большой, SCAN неэффективен.

0 голосов
/ 27 ноября 2018

При чтении документации для LRANGE кажется, что правильный способ получить ваши предметы был бы (при условии, что вы используете RPUSH для создания индексов):

redis> RPUSH user1 "one"
redis> RPUSH user1 "two"
redis> RPUSH user1 "three"
redis> RPUSH user1 "four"
redis> LRANGE user1 1 4
1) "one"
2) "two"
3) "three"
4) "four"

source

...