LINUX.ORG.RU

счетчик на основе redis

 


0

2

Есть БД redis и в ней счетчик. Нужно «вживую» считать кол-во ссылок за последние 10 минут. Сейчас делается след. образом: При каждом запросе округляется текущее время за 10 минут и создается соотв счетчик. Для каждого счетчика ставится expire на 20 минут например. Минус такого подхода заключается в том что статистика собирается «волнами», что не есть хорошо. Есть ли более красивые решения для этого ?

★★☆☆

Да, писать в редис события, и переодически засасывать их в БД(не БД(бугага) Редис). Посля засасывания и обработки - выплевываешь в тот же редис(который на самом деле КВ сторейдж) обработанную статистику. В реальности статистика точнее чем раз в минуту нафиг не нужна.

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

SQL точно не справится? Какие нагрузки?

Хранить 10 минут [20, если чистить будем тоже раз в 10 минут] записей в том же MySQL — не бог весть какая нагрузка. Я на онлайне в 4000+ человек час храню. Всего до 10..15 тыс. записей выходит. И запись через DELAYED INSERT не сказывается на производительности.

А там уже полученные запросы как угодно обработать можно. Пишутся и IP, и имена классов/объектов, и время генерации ответа, и даже user agent — можно и ботов вычислять, и классы, на которые приходится нагрузка и т.п.

KRoN73 ★★★★★
()

добавь больше делений по времени - например раз в 30 секунд и считай сумму счетчиков за последние 10 минут

maxcom ★★★★★
()

Другой вариант - сделать список из дат. Каждое событие представляет собой дату. Нужно откусывать с хвоста сообщения которые старее 10 минут (можно это делать например сразу после добавления новых элементов + перед чтением). Искомым счетчиком будет просто размер списка.

maxcom ★★★★★
()
Последнее исправление: maxcom (всего исправлений: 1)

а ваще один единственный 20-ти строчный(это с дебагом) скрипт на перле через CGI легко справится с поставленной задачей. Никаких тебе мускулов, никаких гигов оперативы, один лишь чистый профит.

Jetty ★★★★★
()
Последнее исправление: Jetty (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.