[REDIS] 트랜잭션

[REDIS] 트랜잭션

" 여러 자료구조를 사용할 수 있는 Redis 의 특성상 트랜잭션을 잘 이용하면 더 유용하게, 다양한 상황에서 Redis 를 사용할 수 있을 것 입니다. “
출처 : https://sabarada.tistory.com/177


Redis 에서는 MULTI, EXEC, DISCARDWATCH 명령어를 사용할 수 있다.

명령어설명
MULTI트랜잭션 시작

트랜잭션 시작 시, 이후 명령어(들)은 바로 실행되지 않고 queue 에 쌓임
EXECqueue 에 쌓인 명령어(들)을 일괄적으로 실행

* RDBMS 의 commit
DISCARDqueue 에 쌓인 명령어(들)을 버림

* RDBMS 의 rollback
WATCH(Optimistic Lock 기반) Lock

*WATCH 이후 UNWATCH 되기 전 1번의 EXEC 혹은 Transaction 이 아닌 다른 명령어만 허용

* EXEC 호출 시 내부적으로 UNWATCH 호출
(= 두 번째 EXEC 호출 시에는 WATCH 없는 상태)

참고 사항 #

  • 트랜잭션 과정 중 서버가 다운되었을 경우, 서버 재시작 시 감지되고 오류와 함께 재시작되지 않을 것이다.
  • 트랜잭션 과정 중 해당 클라이언트의 커넥션이 끊겼을 경우, 명령어들은 실행되지 않는다. (DISCARD 처리 (?))

References #

  1. redis.io : Transactions
  2. [redis] 트랜잭션(Transaction) - 이론편