Хотя я ничего не нашел в этом, я подумал, что нужно дважды проверить - поддерживает ли кэш памяти транзакции?
Если нет, и я уверен, что это наиболее вероятный ответ, то каков правильный метод работы с memcache в среде с транзакциями? Разве вам не пришлось бы читать из БД каждый раз, когда вы планируете обновление, даже если данные находятся в кеше, просто чтобы вы могли установить свои блокировки? Например, скрипт, обновляющий некоторые данные, будет выглядеть так:
Я думаю, вам нужно обновить кеш после выполнения запроса на обновление, на случай, если вы зашли в тупик и вам нужно откатиться. Но вы также должны обновить кеш перед фиксацией, на случай, если какой-либо другой поток ожидает чтения ваших данных и может случайно обновить свой кеш, добавив еще более новые данные до вас, в результате чего ваши устаревшие данные будут перезаписаны.
Это правильная последовательность шагов? Есть ли способ избавиться от необходимости попадания в базу данных при чтении для обновления?