728x90
반응형
목차는 redis 목차 에 있습니다.
source 는 Github 에 있습니다.
[Redis 5편] Redis 상세 정리 (트랜잭션과 Lock)
redis 트랜잭션과 Lock
- redis 는 key,value NoSQL 이지만 transaction, lock 관련 기능을 제공하고 있습니다.
redis 트랜잭션 사용방법 (MULTI)
- MULTI 명령어를 사용한 후, 입력된 명령어가 QUEUE 에 쌓이며, EXEC 명령어를 사용할 때, QUEUE 에 들어있는 명령어가 한 번에 수행됩니다.
- 만약 QUEUE 에 들어간 명령어 중 잘못된 명령어가 있다면 이전 실행된 명령어들은 Redis 서버에 반영됩니다.
redis Lock (WATCH)
- WATCH 명령어를 사용해서 특정 Key 에 Lock 을 걸면 Lock 이 걸리게 됩니다.
- RDB 처럼 Lock 을 계속 잡는게 아니라 트랜잭션이 시작된 상황에서 값 변경을 1번으로 제한하는 기능입니다.
- 아래 케이스는 터미널 2개를 띄워놓고 값 변경에 실패한 케이스입니다.
- terminal 1 에서 ‘lockTest’ 라는 key 에 대해서 lock 을 걸었습니다.
- terminal 2 에서 ‘lockTest’ 의 값을 변경했습니다.
- terminal 1 에서 트랜잭션을 열고 ‘lockTest’ 값을 변경해서 실행했습니다.
- terminal 1 에서 에러가 발생했으며, lockTest 는 값이 1로 조회됩니다.
결론
- 트랜잭션을 사용하여 데이터를 묶어야하는 요건이 있을 때는 MULTI 를 사용하며, 특정 데이터에 대해 Lock 을 걸어야 하는 요건이 있으면 WATCH 를 사용합니다.
reference
'NoSQL > redis' 카테고리의 다른 글
[Redis 6편] Redis 성능 (0) | 2022.06.11 |
---|---|
[Redis 3편] Redis 상세 정리 (key, 클러스터, 센티넬) (0) | 2022.01.13 |
[Redis 2편] Redis 상세 정리 (명령어, 싱글 스레드, 영속성) (0) | 2022.01.13 |
[Redis 4편] spring redis 환경 세팅 및 예제 (0) | 2022.01.06 |
[Redis 1] Redis 는 무엇이며 언제 사용하는가? (0) | 2022.01.04 |
댓글