Redis 트랜잭션
Redis 트랜잭션은 한 번에 여러 명령을 실행할 수 있으며 다음 두 가지 중요한 보장이 제공됩니다.
트랜잭션은 단일 격리된 작업입니다. 트랜잭션의 모든 명령은 직렬화되어 순서대로 실행됩니다. 트랜잭션이 실행되는 동안 다른 클라이언트가 보낸 명령 요청으로 인해 중단되지 않습니다.
트랜잭션은 원자성 작업입니다. 즉, 트랜잭션의 모든 명령이 실행되거나 그 중 아무것도 실행되지 않습니다.
거래는 시작부터 실행까지 다음 세 단계를 거칩니다.
거래 시작.
팀에 합류하라는 명령입니다.
거래를 실행하세요.
예
다음은 트랜잭션의 예입니다. MULTI로 트랜잭션을 시작한 다음 추가합니다. 여러 A 명령이 트랜잭션의 대기열에 추가되고 마지막으로 트랜잭션이 EXEC 명령에 의해 트리거되고 트랜잭션의 모든 명령이 함께 실행됩니다.
redis 127.0.0.1:6379> MULTI OK redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days" QUEUED redis 127.0.0.1:6379> GET book-name QUEUED redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series" QUEUED redis 127.0.0.1:6379> SMEMBERS tag QUEUED redis 127.0.0.1:6379> EXEC 1) OK 2) "Mastering C++ in 21 days" 3) (integer) 3 4) 1) "Mastering Series" 2) "C++" 3) "Programming"
Redis transaction 명령
다음 표에는 redis 트랜잭션 관련 명령이 나열되어 있습니다.
序号 | 命令及描述 |
---|---|
1 | DISCARD 取消事务,放弃执行事务块内的所有命令。 |
2 | EXEC 执行所有事务块内的命令。 |
3 | MULTI 标记一个事务块的开始。 |
4 | UNWATCH 取消 WATCH 命令对所有 key 的监视。 |
5 | WATCH key [key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 |