본문 바로가기
NoSQL/redis

[Redis 5편] Redis 상세 정리 (트랜잭션과 Lock)

by 무대포 개발자 2022. 1. 5.
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개를 띄워놓고 값 변경에 실패한 케이스입니다.
    1. terminal 1 에서 ‘lockTest’ 라는 key 에 대해서 lock 을 걸었습니다.
    2. terminal 2 에서 ‘lockTest’ 의 값을 변경했습니다.
    3. terminal 1 에서 트랜잭션을 열고 ‘lockTest’ 값을 변경해서 실행했습니다.
    4. terminal 1 에서 에러가 발생했으며, lockTest 는 값이 1로 조회됩니다.

결론

  • 트랜잭션을 사용하여 데이터를 묶어야하는 요건이 있을 때는 MULTI 를 사용하며, 특정 데이터에 대해 Lock 을 걸어야 하는 요건이 있으면 WATCH 를 사용합니다.

reference

댓글