반응형
- database 의 transacion 은 ACID 를 보장하기 위한 목적을 가지고 있다면, redis는 Isolation(독립성) 만 보장한다.
- transaction을 시작하면 명령들이 queue 에 쌓이고, transaction이 끝나면 해당 명령들을 모두 반영함
- transaction 안의 명령 중 하나가 실패 하더라도 rollback 을 하진 않음. 실패 한 명령은 건너뛰고 나머지 명령을 commit
- 낙관적 락의 기능을 하는 watch, unwatch 를 이용해 이 부분을 보완 할 수 있다.
- transaction 중 하나의 명령 실패에 대해 rollback을 지원하진 않지만, transaction 단위의 rollback 은 가능하다.
- redis pipeline은 기본적으로 실행할 때 multi/exec 를 사용한다.
- redis pipeline : bulk 명령으로 인한 context switch 에 대한 부하를 줄일 수 있다.
- 사용할 library 에 pipeline 실행 시 transaction을 사용하지 않도록 하는 option 이 있는지 확인해야한다.
- multi/exec 사이에 명령어가 많으면 해당 명령어들을 수행하는 동안에 다른 클라이언트의 명령을 처리하지 못하므로 적절하게 사용해야한다.
- 명령어
- Multi : transacion 시작
- Exec : commit
- Discard : rollback
- Watch : 낙관적 lock 실행
- Unwatch : Watch 중단
반응형
'스터디윗미 😀' 카테고리의 다른 글
StackExchange.Redis.Extensions (0) | 2022.12.27 |
---|