소개
이 랩에서는 Redis 트랜잭션을 탐색합니다. Redis 트랜잭션을 사용하면 여러 명령을 단일 원자적 작업으로 실행하여 데이터 일관성을 보장할 수 있습니다. MULTI 명령으로 트랜잭션을 시작하고, 명령을 큐에 넣은 다음, 트랜잭션을 실행하거나 취소하는 방법을 배우게 됩니다. 트랜잭션 내에서 키를 설정하고, 값을 가져오고, 카운터를 증가시키는 연습을 하게 됩니다.
이 랩에서는 Redis 트랜잭션을 탐색합니다. Redis 트랜잭션을 사용하면 여러 명령을 단일 원자적 작업으로 실행하여 데이터 일관성을 보장할 수 있습니다. MULTI 명령으로 트랜잭션을 시작하고, 명령을 큐에 넣은 다음, 트랜잭션을 실행하거나 취소하는 방법을 배우게 됩니다. 트랜잭션 내에서 키를 설정하고, 값을 가져오고, 카운터를 증가시키는 연습을 하게 됩니다.
이 단계에서는 MULTI 명령을 사용하여 Redis 에서 트랜잭션을 시작하는 방법을 배웁니다. Redis 트랜잭션은 일련의 명령이 단일 원자적 단위로 실행되도록 보장합니다. 이는 모든 명령이 성공하거나 아무도 성공하지 않음을 의미하며, 데이터 무결성을 보장합니다.
먼저 터미널에서 redis-cli 명령을 사용하여 Redis 서버에 연결합니다.
redis-cli
이제 redis-cli 환경에 들어왔으므로 트랜잭션을 시작할 수 있습니다. 다음 명령을 입력하고 Enter 키를 누릅니다.
MULTI
다음과 같은 출력이 표시됩니다.
OK
이는 Redis 가 트랜잭션 모드로 진입했음을 확인합니다. 이후에 입력하는 모든 명령은 EXEC 명령을 사용할 때 함께 큐에 저장되었다가 실행됩니다.
첫 번째 명령을 큐에 넣겠습니다. mykey라는 키에 myvalue 값을 설정합니다. 다음 명령을 입력하고 Enter 키를 누릅니다.
SET mykey "myvalue"
출력은 다음과 같아야 합니다.
QUEUED
이는 SET 명령이 트랜잭션 큐에 성공적으로 추가되었음을 나타냅니다. Redis 에 명시적으로 실행하라고 지시할 때까지 실행되지 않습니다.
다음 단계를 위해 redis-cli 환경을 열어 둡니다.
이 단계에서는 트랜잭션 큐에 더 많은 명령을 추가한 다음 EXEC 명령을 사용하여 전체 트랜잭션을 실행합니다.
이제 mykey의 값을 가져오는 명령을 큐에 넣겠습니다.
GET mykey
다음과 같은 출력이 표시됩니다.
QUEUED
다음으로, anotherkey라는 다른 키에 anothervalue 값을 설정하는 명령을 추가합니다.
SET anotherkey "anothervalue"
출력은 다음과 같아야 합니다.
QUEUED
마지막으로 mycounter라는 카운터를 증가시키는 INCR 명령을 큐에 넣습니다. mycounter가 존재하지 않으면 Redis 는 이를 생성하고 증가시키기 전에 0 으로 초기화합니다.
INCR mycounter
다음과 같은 출력이 표시됩니다.
QUEUED
이제 트랜잭션 내에 여러 명령을 큐에 넣었습니다. 이들을 한 번에 모두 실행하려면 EXEC 명령을 사용합니다.
EXEC
출력은 다음과 유사해야 합니다.
1) OK
2) "myvalue"
3) OK
4) (integer) 1
출력을 분석해 보겠습니다.
1) OK: SET mykey "myvalue" 명령의 결과입니다.2) "myvalue": GET mykey 명령의 결과입니다.3) OK: SET anotherkey "anothervalue" 명령의 결과입니다.4) (integer) 1: INCR mycounter 명령의 결과입니다.트랜잭션 내의 모든 명령은 원자적으로 실행되었습니다.
다음 단계를 위해 redis-cli 환경을 열어 둡니다.
이 단계에서는 설정한 키의 값을 검색하여 이전 트랜잭션의 명령이 올바르게 실행되었는지 확인합니다.
값을 확인하려면 각 키에 대해 GET 명령을 사용합니다.
GET mykey
GET anotherkey
GET mycounter
다음과 같은 출력이 표시되어야 합니다.
"myvalue"
"anothervalue"
"1"
이는 트랜잭션이 성공적으로 실행되었고 키의 값이 예상대로 업데이트되었음을 확인합니다.
다음 단계를 위해 redis-cli 환경을 열어 둡니다.
이 단계에서는 DISCARD 명령을 사용하여 Redis 트랜잭션을 취소하는 방법을 배웁니다. 큐에 쌓인 명령을 실행하지 않기로 결정했을 때 유용합니다.
먼저 Redis 서버에 연결하고 새 트랜잭션을 시작합니다.
MULTI
이제 몇 가지 명령을 큐에 넣습니다.
SET mykey "newvalue"
INCR mycounter
각 명령에 대해 QUEUED 응답을 보게 될 것입니다.
이제 트랜잭션을 실행하는 대신 취소합니다. DISCARD 명령을 사용합니다.
DISCARD
다음과 같은 출력을 보게 될 것입니다.
OK
이는 트랜잭션이 취소되었고 큐에 쌓인 모든 명령이 폐기되었음을 확인합니다. 확인하려면 mykey와 mycounter의 값을 확인할 수 있습니다. 이 값들은 업데이트되지 않았어야 합니다.
명령이 기록되도록 redis-cli 환경을 종료하는 것을 잊지 마십시오.
exit
이 실습에서는 Redis 트랜잭션을 사용하여 여러 명령을 원자적으로 (atomically) 실행하는 방법을 배웠습니다. MULTI로 트랜잭션을 시작하고, 명령을 큐에 넣고, EXEC로 트랜잭션을 실행하고, DISCARD로 트랜잭션을 취소하는 연습을 했습니다. 이 지식은 복잡한 작업을 수행할 때 Redis 에서 데이터 일관성을 유지하는 데 매우 중요합니다.