데이터베이스/Redis
Redis Transaction
tire-some
2022. 7. 8. 23:07
Redis 트랜잭션? RDB에서 제공하는 트랜잭션이랑 같은 기능인가?
https://redis.io/docs/manual/transactions/
Transactions
How transactions work in Redis
redis.io
공식 사이트 메뉴얼 만큼 좋은 건 없다.
쉽게 생각하면 커맨드를 버퍼에 모았다가 레디스에 날려준다고 생각하면 된다.
Multi > 커맨드들(GET, EXPIRE...) > Exec
RDB에서 제공하는 파워풀한 트랜잭션을 기대하면 안된다.
단순하게 커맨드를 잘못입력해서 실패나는게 아닌이상 모아서 쏴주는 기능만 있다고 봐도 무방하다.
근데 여기서 쓸만한게 있다 Watch 커맨드인데
특정 키를 Watch해서 낙관적락을 가능하게 해준다.
위의 Watch 기능으로는 스핀락으로 구현해야하므로 성능이슈를 감안해야한다.
때문에 펍섭 방식의 분산락이 필요하면 아래 레디스의 레드락 알고리즘을 구현한 구현체가 많으니 언어 및 환경에 맞게 가져다 쓰면된다.
https://redis.io/docs/reference/patterns/distributed-locks/
Distributed Locks with Redis
A Distributed Lock Pattern with Redis
redis.io