Redis 트랜잭션 에 대하여 알아보겠습니다.
우선 트랜잭션이 이루어지는 순서는 다음과 같습니다.
- MULTI : 트랜잭션을 시작합니다. 이후에 실행되는 명령어는 모두 이 트랜잭션에 속합니다.
- 명령어 저장 : MULTI 이후에 실행되는 멸영어들은 순차적으로 기록되어 트랜잭션 로그(명령어 큐)에 저장됩니다. 여기에 저장된 명령어들은 실행되지 않습니다.
- EXEC : 트랜잭션을 실행합니다. EXEC 명령어를 호출하면 트랜잭션 로그(명령어 큐)에 저장된 순서대로 명령어들을 실제로 실행합니다.
- 트랜잭션 결과 : 만약 중간에 오류가 발생하거나, WATCH로 감시한 키가 변경되었다면, EXEC가 호출되기 전까지의 트랜잭션의 모든 명령어들은 취소되어 실행되지 않은 것처럼 처리됩니다.
트랜잭션의 주의사항
Redis는 단일 스레드로 동작합니다. 트랜잭션을 진행하는 동안 다른 클라이언트가 Redis의 I/O 작업이 불가능합니다.
그러므로 트랜잭션은 빠르고 간결하게 설계하는 것이 좋습니다.
Redis의 트랜잭션은 기능적으로 원자성을 보장하지만, ACID(원자성, 일관성, 격리성, 지속성) 트랜잭션과는 다른 개념입니다. Redis는 단일 노드에서 동작하므로 분산 환경에서의 복제와 같은 일관성과 격리성을 보장하는 기능을 제공하지 않습니다. 따라서 Redis를 사용할 때에는 데이터 모델과 트랜잭션의 특성을 고려하여 적절한 사용 방법을 선택해야 합니다.
Redis 6.0 변경점
-> Redis 6.0 버전부터는 멀티 쓰레드를 지원합니다. 그러나 I/O 처리는 단일 스레드가 담당하므로 트랜잭션 또한 6.0 이하의 버전과 동일하게 작동합니다.
'Database' 카테고리의 다른 글
MySQL 8에서 인덱스 성능 극대화: 알고리즘과 실전 사례 (1) | 2023.12.26 |
---|---|
데이터베이스 프로시저, 함수, 뷰: 각각의 역할과 사용법 (2) | 2023.12.26 |
트랜잭션 격리 수준의 종류와 성능 최적화 전략 (0) | 2023.09.02 |
Redis에서 데이터 영구 보존: 스냅샷과 AOF로 안전한 복구 시스템 구축 (0) | 2023.08.04 |
Redis의 장점과 한계: 빠른 속도와 메모리 기반 데이터 처리 (0) | 2023.08.04 |