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