Если вы хотите, чтобы эти данные были постоянными, вы не должны записывать их в memcache (что является механизмом кэширования, а не хранилищем данных) .
По сути, то, что я, вероятно, сделал бы, было бы так:
- При попытке получить счетчик для страницы:
- Проверьте, хранится ли он в memcache
- если да, используйте его
- если нет, извлеките его из БД и сохраните в memcache
- При попытке написать счетчик (т.е. счетчик + = 1) :
- Запись данных в базу данных (
update ... set counter = counter + 1 where...
)
- выбрать данные обратно из базы данных; Может помочь перенос как обновления, так и выбора в транзакции: изоляция - это то, что базы данных делают хорошо.
- и немедленно записать его в memcache, чтобы он соответствовал следующей операции «get»
Но я бы не использовал memcache для настойчивости:
- Я бы никогда не записал в memcache данные, которые не были записаны в базу данных
- персистентность - это работа базы данных; не кеширующий движок.