СУММА последних 24 часовых оценок в определенном диапазоне в отсортированном наборе (Redis) - PullRequest
0 голосов
/ 10 октября 2019

Можно ли рассчитать СУММ баллов, сохраненных за 24 часа, с учетом производительности сервера Redis? (Приблизительно 1 миллион новых строк добавляется в день)

Какой формат следует использовать для хранения меток времени и оценки пользователей, использующих отсортированные наборы?

На самом деле я использую эту команду:

ZADD allscores 1570658561 20

В качестве оценки это фактическое время в секундах ... а в другом поле - реальная оценка.

Но здесь есть проблема! Когда другой пользователь получает ту же оценку (20), он не добавляется, поскольку он уже присутствует. - Есть ли решение этой проблемы?

Я думаю использовать сценарий LUA, но есть 2 головные боли:

  • Сценарий LUA будет блокировать работу других команд до тех пор, пока работа не будет завершена (в моем случае это не очень хорошая практика, поскольку скрипт должен работать 24/24 7/7, в то время как многие пользователидля одновременного получения данных с сервера кэширования Redis, таких как оценки пользователей, история данных.) - Кроме того, сценарию LUA приходится иметь дело каждый раз с большим количеством записей, сохраняемых каждый день в определенном ключе. Таким образом, пока сценарий Luaработает, пользователи не могут извлекать данные ... зная, что скрипт Lua будет работать в цикле все время.

  • Во-вторых, это связано с первой проблемой, которая не позволяет мне хранитьтот же счет, если я использую метку времени в качестве оценки в команде, чтобы я мог вернуть 24-часовые данные.

Если вы в моем случае, как вы будете справляться с этим? Спасибо

...