Что лучше использовать для хранения уникальных за сутки ip адресов?



@Sasha333

Хотел бы получить совет по поводу того, какой наиболее актуальный метод хранения и выборки уникальных за сутки данных.
Немного о нагрузке и данных:
На php скрипт по udp приходят ip адреса каждую минуту около 2х тысяч раз (процентов 80 это всё повторы), необходимо делать в дальнейшем запись в бд только уникальных значений за сегодня. То есть имеется 3 поля id (автогенерируемый), ip, datatime. запускается скрипт и начинается постоянный обмен пакетами.
Как я вижу это, необходимо поставить либо redis либо memcache и заносить все абсолютно адреса в кэш озу, после чего например каждые 5-10 минут вносить только уникальные за сегодня записи ip, datatime.


Решения вопроса 1



@sergiks Куратор тега PHP

Redis вполне подходит для задачи.

К примеру, для каждого ip формировать ключ вида дата:ip. Например SET "20210205:192.168.1.5" "" — для каждого ip создавать ключ с пустой строкой.

После полуночи IP начнут сохраняться с новой датой, а PHP скрипт по крону разберёт предыдущие сутки KEYS "20210205:*" и сохранит собранные IP в БД.

Ещё лучше каждые сутки держать как хэш, где имя это дата, поля ip, и значения счетчики хитов с этого ip. Делать каждый раз HINCRBY "дата" "ip" 1 См. HINCRBY

P.S. ip, если там только IPv4, это 4 байта, можно хранить как целые числа, а не строки – компактнее.



2

комментария


Ответы на вопрос 0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *