아무 것도 발견 할 수 없지만 memcache 지원 트랜잭션을 두 번 확인했습니다.트랜잭션이있는 Memcache?
그렇지 않은 경우 가능성있는 대답 일 가능성이 높습니다. 그렇다면 트랜잭션이있는 환경에서 memcache를 사용하는 올바른 방법은 무엇입니까? 업데이트 할 계획이있을 때마다 DB에서 데이터를 읽지 않아도됩니다. 데이터가 캐시에 있어도 잠금을 설정할 수 있습니까? 예를 들어 일부 데이터를 업데이트하는 스크립트는 다음과 같습니다.
- BEGIN; SELECT ... FOR UPDATE;
- 계산 ...
- UPDATE TABLE ...;
- 업데이트 캐시
- COMMIT;
데드락이 발생하여 롤백해야하는 경우에 대비하여 업데이트 쿼리를 실행 한 후에 캐시를 업데이트해야한다고 생각합니다. 그러나 다른 스레드가 데이터를 읽으려고 기다리고 실수로 새 데이터로 캐쉬를 업데이트하여 이전 데이터로 덮어 쓸 수 있기 때문에 커밋하기 전에 캐시를 업데이트해야합니다.
올바른 순서가 맞습니까? 거기에 어떤 방법을 업데이 트에 대한 DB를 공격하지 않아도됩니까?