У меня есть сотни футбольных игр, сохраненных в моей базе данных redus. Они сохраняются в хешах под ключом: games:soccer:data
У меня есть три набора z, чтобы объединить их в предстоящие, живые и закончившиеся. Все заказывается по дате (оценка). Таким образом, я могу легко получить их в зависимости от того, скоро ли они начнутся, они уже происходят, или они уже закончились. Теперь, я хочу, чтобы иметь возможность получить их по именам лиг.Каков наилучший способ получить футбольные игры по именам лиг в redis?
я придумал две альтернативы:
Первая альтернатива: сохранить отдельные хэшей, содержащих игру идентификатор и название лиги. Таким образом, я могу получить все живые игровые идентификаторы, а затем проверить каждый идентификатор на их соответствующие хэши, если он соответствует именам лиги, которые я хочу, затем я вставляю их в массив, если нет, я пропущу его. Наконец, верните массив со всеми игровыми идентификаторами для лиг, которых я хотел.
Вторая альтернатива: создавать ключи для каждой лиги и есть живой, предстоящих и закончил наборы для каждого из них. Таким образом, я думаю, было бы быстрее получить идентификаторы игры; однако было бы больно поддерживать каждый набор.
Если у вас есть другой способ сделать это, пожалуйста, дайте мне знать. Я не знаю, будет ли сортировка быстрее и сохранить память.
Я ищу скорость и низкое использование памяти.
EDIT (после Hobbs альтернативы):
const multi = client.multi();
const tempSet = 'users:data:14:sports:soccer:lists:temp_' + getTimestamp();
return multi
.sunionstore(
tempSet,
[
'sports:soccer:lists:leagueNames:Bundesliga',
'sports:soccer:lists:leagueNames:La Liga'
]
)
.zinterstore(
'users:data:14:sports:soccer:lists:live',
2,
'sports:lists:live',
tempSet
)
.del(tempSet)
.execAsync()
Мне нужно установить AGGREGATE MAX
на мой вопрос, и я понятия не имею, как это сделать.
Что произойдет, если этот Узел, содержащий все игры для каждой лиги, станет очень большим с тысячами записей? Имеет ли значение его размер? – ElPirru
@ ElPirru это имеет значение, но тысячи не являются «очень большими» и вряд ли будут проблемой. Но, конечно, создайте некоторые тестовые данные и оцените производительность! – hobbs
Я проведу несколько тестов и опубликую результаты. Я мог бы удалять игры старше х раз, чтобы сохранить размер «маленький» или иметь два SET, один с играми более чем на месяц, а другой список с остальными играми. Что, если я вернусь из лиги игры из своего хэша, а затем сделаю новый набор оттуда? Это будет использовать функцию сортировки, которую я думаю .... – ElPirru