Скорее всего, я буду использовать MemCache для кэширования некоторых результатов базы данных. Поскольку я никогда не писал и не занимался кэшированием, я подумал, что было бы неплохо спросить тех из вас, кто уже это сделал. В системе, которую я пишу, в какой-то момент времени могут выполняться параллельные сценарии. Вот что я планирую сделать:
- Пишу систему обмена баннерами.
- Информация о баннерах хранится в базе данных.
- Существуют разные сайты с разным трафиком, загружающие php-скрипт, который будет генерировать код для этих баннеров. (чтобы баннеры отображались на сайте клиента)
- Когда баннер показывается впервые - он кэшируется memcache.
- Баннер имеет время жизни кэша, например, 1 час.
- Каждый час кеш обновляется.
Потенциальная проблема, которую я вижу в этой задаче, находится на шагах 4 и 6. Если у нас есть, например, 100 сайтов с большим трафиком, может случиться так, что скрипт имеет несколько экземпляров, работающих одновременно. Как я могу гарантировать, что по истечении срока действия кеша он будет регенерирован один раз и данные останутся неповрежденными?