Можно ли рассчитать СУММ баллов, сохраненных за 24 часа, с учетом производительности сервера Redis? (Приблизительно 1 миллион новых строк добавляется в день)
Какой формат следует использовать для хранения меток времени и оценки пользователей, использующих отсортированные наборы?
На самом деле я использую эту команду:
ZADD allscores 1570658561 20
В качестве оценки это фактическое время в секундах ... а в другом поле - реальная оценка.
Но здесь есть проблема! Когда другой пользователь получает ту же оценку (20), он не добавляется, поскольку он уже присутствует. - Есть ли решение этой проблемы?
Я думаю использовать сценарий LUA, но есть 2 головные боли:
Сценарий LUA будет блокировать работу других команд до тех пор, пока работа не будет завершена (в моем случае это не очень хорошая практика, поскольку скрипт должен работать 24/24 7/7, в то время как многие пользователидля одновременного получения данных с сервера кэширования Redis, таких как оценки пользователей, история данных.) - Кроме того, сценарию LUA приходится иметь дело каждый раз с большим количеством записей, сохраняемых каждый день в определенном ключе. Таким образом, пока сценарий Luaработает, пользователи не могут извлекать данные ... зная, что скрипт Lua будет работать в цикле все время.
Во-вторых, это связано с первой проблемой, которая не позволяет мне хранитьтот же счет, если я использую метку времени в качестве оценки в команде, чтобы я мог вернуть 24-часовые данные.
Если вы в моем случае, как вы будете справляться с этим? Спасибо