Задать вопрос
@Sasha333

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

Хотел бы получить совет по поводу того, какой наиболее актуальный метод хранения и выборки уникальных за сутки данных.
Немного о нагрузке и данных:
На php скрипт по udp приходят ip адреса каждую минуту около 2х тысяч раз (процентов 80 это всё повторы), необходимо делать в дальнейшем запись в бд только уникальных значений за сегодня. То есть имеется 3 поля id (автогенерируемый), ip, datatime. запускается скрипт и начинается постоянный обмен пакетами.
Как я вижу это, необходимо поставить либо redis либо memcache и заносить все абсолютно адреса в кэш озу, после чего например каждые 5-10 минут вносить только уникальные за сегодня записи ip, datatime.
  • Вопрос задан
  • 296 просмотров
Подписаться 2 Простой 11 комментариев
Решения вопроса 1
sergiks
@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 байта, можно хранить как целые числа, а не строки – компактнее.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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