[redis] transaction

cochocho·2026년 5월 5일

transaction이란

여러 명령을 하나의 단위로 묶어 실행하는 것

redis에서의 transaction

명령

  • multi : transaction 시작
  • exec : 명령 실행

multi ~ exec 사이 입력한 모든 명령은 큐에 저장됨
이후 exec 명령 날리는 시점에 한번에 실행

*exec : 큐에 쌓인 명령들을 실행하고 배열 형태로 반환(배열 요소의 각 명령의 실행 결과)

중간에 명령 취소 시 큐에 쌓인 명령들을 버림

*mutli 시점에 문법 오류가 있는 경우는 에러가 바로 반환됨
그러나 run time error 자체는 exec에서 실행됨, mutli에서는 문법 오류만 잡고 실제 실행을 하지 않기 때문

transaction의 특성

atomicity

transaction 내 작업들은 함께 커밋되거나 함께 롤백되어야 한다는 특성에 대해

  • commit은 한꺼번에 됨 : 원자성을 보장하는 단일 스레드이기 때문
  • rollback : 지원 안함, 따라서 하나의 명령이 실행 실패 시 나머지 명령은 반영됨

consistency

트랜잭션을 반영 전후로 데이터 규칙이 온전해야하지만 레디스의 경우는
비즈니스 로직의 일관성 x
ex) 음수가 되면 안되는 잔액에 대한 보장 x

isolation

트랜잭션 간 격리성 : 원자성을 보장하는 단일 스레드임에 따라 지켜짐

durability

영속성은 aof 혹은 rdb snapshot을 통해 지원되며 이는 기본 제공은 아니며 따로 설정을 필요로 함


redis에서의 트랜잭션의 활용

따라서 데이터 정합성보다 여러 작업을 한꺼번에 실행하는 용도에 의의를 둠

0개의 댓글