>  기사  >  데이터 베이스  >  Redis 트랜잭션의 용도는 무엇입니까

Redis 트랜잭션의 용도는 무엇입니까

藏色散人
藏色散人원래의
2019-06-19 11:17:032898검색

Redis 트랜잭션의 용도는 무엇입니까

Redis 트랜잭션

MULTI, EXEC, DISCARD 및 WATCH는 Redis 트랜잭션의 기초입니다. 트랜잭션을 명시적으로 시작하고 제어하는 ​​데 사용되며 한 단계에서 일련의 명령을 실행할 수 있습니다. 그리고 두 가지 중요한 보장을 제공합니다.

● 트랜잭션의 모든 명령은 직렬화되어 순서대로 실행됩니다. Redis 트랜잭션을 실행하는 동안 다른 클라이언트에서 발행한 요청은 발생하지 않습니다. 이렇게 하면 명령 대기열이 단일 원자성 작업으로 실행됩니다.

● 대기열의 모든 명령이 처리되거나 무시됩니다. EXEC 명령은 트랜잭션의 모든 명령 실행을 트리거하므로 클라이언트가 트랜잭션 컨텍스트에서 서버와의 연결이 끊어지면

● MULTI 명령을 호출하기 전에 발생하면 명령이 실행되지 않습니다.

● EXEC인 경우 이 명령이 호출되면 모든 명령이 실행됩니다.

동시에 redis는 AOF(추가 전용 파일)를 사용하여 추가 쓰기 작업을 통해 디스크에 트랜잭션을 씁니다. 다운타임이나 프로세스 충돌이 발생하면 서비스가 정상적으로 시작되고 일부 작업을 재개할 수 있도록 redis-check-aof 도구를 사용하여 추가 전용 파일을 복구할 수 있습니다. (권장: "Redis 비디오 튜토리얼")

Usage

MULTI 명령을 사용하여 Redis 트랜잭션을 명시적으로 시작합니다. 이 명령은 항상 OK로 응답합니다. 이 시점에서 사용자는 여러 명령을 실행할 수 있으며 Redis는 이러한 명령을 실행하지 않고 대기열에 추가합니다. EXEC가 호출되면 모든 명령이 실행됩니다. DISCARD를 호출하면 트랜잭션의 명령 대기열을 지우고 트랜잭션을 종료할 수 있습니다.

다음 예에서는 foo 및 bar 키를 원자적으로 증가시킵니다.

>MULTI
OK
>INCR foo
QUEUED
>INCR bar
QUEUED
>EXEC
1)(整数)1
2)(整数)1

위 명령 실행에서 볼 수 있듯이 EXEC는 배열을 반환합니다. 여기서 각 요소는 트랜잭션의 단일 명령에 대한 반환 결과이며 순서는 명령이 실행된 순서와 동일합니다.

Redis 연결이 MULTI 요청의 컨텍스트에 있을 때 모든 명령은 QUEUED 문자열(Redis 프로토콜의 관점에서 상태 응답으로 전송됨)로 응답되고 명령 대기열에 대기됩니다. EXEC가 호출될 때만 대기열에 있는 명령이 실행되며 이때 실제 결과가 반환됩니다.

위 내용은 Redis 트랜잭션의 용도는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.