2016-12-14 4 views
2

Я есть хэши в кэше Redis, как:Получить все хэши существует в Redis

Hash   Key Value 
hashme:1 Hello World 
hashme:2 Here Iam 
myhash:1 Next One 

Моя цель состоит в том, чтобы получить хэши в качестве выходного сигнала в CLI нравится:

hashme 
myhash 

Если есть нет такой вариант, это тоже нормально:

hashme:1 
hashme:2 
myhash:1 

Я не нашел в нем соответствующей команды в Redis API.

Любые предложения?

ответ

1

Идея redis (и других магазинов K/V) заключается в том, чтобы вы создали индекс. База данных не сделает это за вас. Это большая разница с реляционными базами данных, что соответствует лучшим показателям.

Поэтому, когда ваше приложение создает хэш, поместите его ключ в SET. Когда ваше приложение удалит хэш, удалите его ключ из SET. А затем, чтобы получить список хеш-идентификаторов, просто используйте SMEMBERS для получения содержимого SET.

+0

Это приятное обходное решение, но я не хочу писать код в своем приложении только для этого сценария. – ohadinho

+0

Это не обходное решение, как это сделать. Вы несете ответственность за создание и управление своими собственными индексами, как правило, с помощью SET, поэтому, если вам нужно получить все HASH какого-либо типа, соответствующего вашему приложению (например, пользователям), вам необходимо сохранить SET, называемый пользователями, в который вы добавляете/удалите свои HASH-ключи по мере необходимости –

+0

Оба ответа могут быть действительными в зависимости от контекста. У нас недостаточно информации о контекстах в вопросе, чтобы узнать, какой из них лучше (на примере: как все ключи находятся в БД? Это в производстве? И т. Д.) –

1

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

+1

Можете ли вы дополнительно объяснить, какой набор команд мне нужен выполнить ? – ohadinho

+0

Команда [SCAN] (https://redis.io/commands/scan) используется для инкрементно повторяющихся ключей в Redis. С помощью этой команды вы можете получить все ключи в Redis. Команда [TYPE] (https://redis.io/commands/type) используется для получения типа ключа. Дополнительную информацию см. В документе. –

Смежные вопросы