Несмотря на то, что я ничего не смог найти, я подумал, что должен перепроверить - поддерживает ли memcache транзакции?
Если нет, то, на что я держу пари, это вероятный ответ, тогда какой метод правильный?работать с memcache в среде с транзакциями?Разве вам не придется читать из БД каждый раз, когда вы планируете обновить, даже если данные находятся в кеше, просто чтобы вы могли установить свои блокировки?Например, скрипт, который обновляет некоторые данные, будет выглядеть так:
- BEGIN;ВЫБРАТЬ ... ДЛЯ ОБНОВЛЕНИЯ;
- Вычислить ...
- ТАБЛИЦА ОБНОВЛЕНИЙ ...;
- Обновление кэша
- COMMIT;
Я думаю, что вам нужно обновить кеш после запуска запроса на обновление, если вы зашли в тупик и вам необходимо выполнить откат.Но вам также следует обновить кеш перед фиксацией, если какой-либо другой поток ожидает чтения ваших данных и может случайно обновить свой кеш еще более новыми данными, что приведет к тому, что ваши устаревшие данные перезапишут его.
Это правильная последовательность шагов?Есть ли способ, чтобы не обновлять БД на чтение?