mitaichik
@mitaichik

Как подсчитать кол-во событий за час?

Всем привет!

Задача такая: подсчитывать кол-во событий за час, чтоб ограничить кол-во обращений к API конкретному пользователю.

Думал пихать в redis ключ что-то типа userId_eventName_time и ставить ему expire в один час, а потом получать кол-во с помощью получения кол-во по шаблону userId_eventName_*. Но такой подход подрузамевает создание огромного кол-во ключей и врядли хорош.

Есть какой-либо другой способ учета кол-ва событй за час?

Заранее спасибо!
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
gobananas
@gobananas
finishhim.ru
Если конечная цель ограничить количество то по ресурсам мне кажется экономнее было бы переложить эту работу не на приложение а на сервер, например с помощью iptables
Делается приблизительно так wbtools.ru/?forum=22
На хабре где-то стать я получше была но сейчас не могу найти.
Ответ написан
Комментировать
Возможно такое решение:
Создать таблицу user_log (id, user_id, date) и при каждом обращении добавлять запись в эту таблицу.
Дальше вы вытягиваете кол-во обращений за определенный промежуток времени:
SELECT COUNT(*) 
FROM `user_log`
WHERE `date` >= '2016-01-24 18:00:00'
AND `date` < '2016-01-24 17:00:00'
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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