Задать вопрос
MrLinch
@MrLinch
Just like coding...

Как организовать отложенную обработку статистики?

Здравствуйте.

Есть простая система учета статистики кликов по ссылкам. Фронтенд после того как осуществляет редирект, отправляет RPUSH'ом данные о клике (LinkID, сессию, timestamp), в ключ с именем "clicks_queue". Каждые 5 сек, просыпается воркер который командой LRANGE clicks_queue 0 -1 извлекает все клики из очереди и записывает в БД изминения сгруппированные по ссылкам. При маленьких нагрузках все ок, но стоит нагрузке возрасти как наблюдается расхождение по логам и статистике. Подозреваю что пока воркер читает данные из очереди, фронтенд добавляет еще клики. Но когда воркер извлек все элементы, он очищает ltrim'om очередь и те данные что запичались так же удаляются. Что я делаю не так, и как лучше организовать отложенную обработку статистики?

Заранее, спасибо.
  • Вопрос задан
  • 125 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Аналитик данных
    7 месяцев
    Далее
  • Skillfactory
    Data Scientist с нуля до PRO
    25 месяцев
    Далее
  • Хекслет
    Аналитик данных
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
посмотрите в сторону сервера очередей,
не знаю как устроен RPUSH, но в Питоне подобное опирается на zeromq или gearman на худой конец
Ответ написан
Комментировать
mgyk
@mgyk
Вытаскивайте данные и очищайте список внутри транзакции:

redis.io/topics/transactions
MULTI
LRANGE clicks_queue 0 -1
DEL clicks_queue
EXEC
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы