반응형
  • 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
반응형

StackExchange.Redis.Extensions

 

  • GetAllAsync
    • 파라미터로 넘긴 모든 key에대해서 redis에 value가 있으면 해당 value를 return, 없다면 null 을 리턴한다.
      • 주의! value가 있는 key만 return 하는게 아니다

 

반응형

'스터디윗미 😀' 카테고리의 다른 글

Redis Transacion  (0) 2022.12.27

+ Recent posts