먼저 Redis 트랜잭션의 본질을 간략하게 소개하겠습니다.
Redis 트랜잭션의 본질은 일련의 명령입니다. 트랜잭션은 한 번에 여러 명령 실행을 지원하며 트랜잭션의 모든 명령은 직렬화됩니다. 트랜잭션 실행 프로세스 중에 대기열의 명령은 직렬화되어 순서대로 실행되며 다른 클라이언트가 제출한 명령 요청은 트랜잭션 실행 명령 시퀀스에 삽입되지 않습니다.
요약하자면, Redis 트랜잭션은 대기열에 있는 일련의 명령을 일회성, 순차적, 배타적으로 실행하는 것입니다.
Redis 트랜잭션에는 격리 수준 개념이 없습니다.
일괄 작업은 EXEC 명령을 보내기 전에 대기열 캐시에 저장되며 실제로 실행되지 않습니다. 따라서 트랜잭션 내에서 업데이트를 확인하기 위한 쿼리가 없습니다. 트랜잭션 외부에서 쿼리를 볼 수 없습니다.
Redis는 원자성을 보장하지 않습니다.
Redis에서는 단일 명령이 원자적으로 실행되지만 트랜잭션은 원자성을 보장하지 않으며 롤백도 없습니다. 트랜잭션의 명령 중 하나라도 실행이 실패하더라도 나머지 명령은 계속 실행됩니다.
Redis 트랜잭션의 3단계:
트랜잭션 실행 명령 및 대기열 시작
Redis 트랜잭션 관련 명령:
watch key1 key2...: 모니터링되는 키가 트랜잭션 이전에 있는 경우 하나 이상의 키를 모니터링합니다. 실행, 다른 명령에 의해 키가 변경되면 트랜잭션이 중단됩니다(낙관적 잠금과 유사) multi: 트랜잭션 블록의 시작을 표시(대기 중) exec: 모든 트랜잭션 블록의 명령 실행(exec가 실행되면 이전에 추가된 모니터링 잠금이 취소됩니다) Discard: 트랜잭션 취소, 트랜잭션 블록의 모든 명령 취소
Unwatch: Watch의 모든 키 모니터링 취소
Redis 트랜잭션 사용 사례:
(1) 정상 실행
( 2) 트랜잭션 포기redis video tutorial
) (3) EXEC 명령 실행 시 트랜잭션 큐에 명령 오류(Java 컴파일 오류와 유사)가 있는 경우 , all 모든 명령이 실행되지 않습니다
요약:
watch 명령은 트랜잭션이 커밋될 때 watch에서 모니터링하는 여러 KEY 중 하나의 KEY 값이 다른 클라이언트에 의해 변경된 경우 트랜잭션 대기열이 변경되지 않습니다. EXEC를 사용하여 트랜잭션을 실행하고 Nullmulti-bulk 응답을 반환하여 트랜잭션 실행이 실패했음을 호출자에게 알립니다.
관련 권장 사항:
redis 데이터베이스 튜토리얼위 내용은 Redis 트랜잭션 사용 사례 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!