@dzoid

Скинуть данные из REDIS в MYSQL после истечения срока жизни ключа?

Нужно с помощью php + redis + mysql считать и хранить pageviews каждого материала на сайте.
Хочется делать так:
1. Получаем данные из mysql и сохраняем значение в ключ redis с временем жизни ключа 5 минут
2. Увеличиваем значение ключа REDIS
3. Когда время жизни ключа заканчивается - делается callback на функцию которая делает UPDATE `news` SET `pageviews`=$newvalue

$newvalue - то что насчитал REDIS.

Есть один вопрос - если по прошествии 4минут 59 секунд не будет обращений к ключу ($redis->get()) - выполнится ли callback (терять данные нельзя)?

Не подскажите как реализовать такое?

P.S. можно конечно использовать cron для сбора данных с REDIS и обновления mysql но хотелось бы стандартными средствами!

Спасибо!
  • Вопрос задан
  • 642 просмотра
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
https://redis.io/topics/notifications

UPD: я тут перечитал ваша каша, видимо идея у вас такая: редисом храним быстрое нарастание просмотров, раз в какое-то время кидаем в мускуль чтобы не похерить в случае жопы.
Если так, то зачем нам время смерти? Пишите в ключ до упора, раз в какой-то промежуток скидывайте в мускуль, при отсутствии ключа по запросу (например был сбой и редис помер) - лезем в мускуль, достаем сколько было, суем в редис и мучаем его дальше в том же режиме. Имхо кучу ресурсов сэкономите на создании/убивании ключей.
Ответ написан
Ваш ответ на вопрос

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

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