소개
이 실습에서는 기본적인 Redis 데이터 구조를 살펴보고 redis-cli 명령줄 도구를 사용하여 상호 작용하는 방법을 배웁니다. 이 과정은 Redis에 데이터를 저장하고 검색하는 방법을 이해하는 데 중점을 둔 실습 위주로 구성되어 있습니다.
먼저 문자열(Strings)을 다루며 값을 설정, 조회, 존재 여부 확인 및 삭제하는 방법을 배웁니다. 그 다음 LPUSH와 LRANGE 명령어를 사용하여 리스트(Lists)를 다루고, SADD와 SMEMBERS를 통해 세트(Sets)를 관리합니다. 마지막으로 HSET과 HGET을 사용하여 해시(Hashes)를 탐색합니다. 이러한 실습 경험은 다양한 애플리케이션에서 Redis를 활용하기 위한 탄탄한 기초가 될 것입니다.
문자열을 사용한 간단한 데이터 처리
이 단계에서는 Redis를 사용하여 간단한 문자열 데이터를 저장하고 검색하는 방법을 알아봅니다. Redis는 종종 캐시나 간단한 키-값 저장소로 사용되며, 문자열은 Redis가 제공하는 가장 기본적인 데이터 타입입니다.
먼저 redis-cli 명령줄 도구를 사용하여 Redis 서버에 연결합니다. LabEx VM에서 터미널을 엽니다. 이미 ~/project 디렉토리에 있을 것입니다.
다음 명령어를 입력하여 Redis 서버에 연결하세요:
redis-cli
다음과 같은 프롬프트가 나타나야 합니다:
127.0.0.1:6379>
이는 Redis 서버에 성공적으로 연결되었음을 의미합니다.
이제 간단한 문자열 값을 설정해 보겠습니다. SET 명령어를 사용합니다. SET 명령어는 키와 값이라는 두 개의 인자를 받습니다. mykey라는 키에 Hello Redis라는 값을 설정해 보겠습니다:
SET mykey "Hello Redis"
다음과 같은 출력이 나타나야 합니다:
OK
이는 값이 성공적으로 설정되었음을 의미합니다.
이제 GET 명령어를 사용하여 값을 검색해 보겠습니다. GET 명령어는 키라는 하나의 인자를 받습니다. mykey의 값을 검색해 보겠습니다:
GET mykey
다음과 같은 출력이 나타나야 합니다:
"Hello Redis"
이는 Redis에 문자열 값을 성공적으로 저장하고 검색했음을 확인해 줍니다.
다른 예제를 시도해 보겠습니다. 이번에는 숫자를 문자열로 저장해 보겠습니다.
SET counter 100
GET counter
다음과 같이 표시됩니다:
"100"
Redis는 숫자를 나타내더라도 이를 문자열로 취급합니다.
EXISTS 명령어를 사용하여 키가 존재하는지 확인할 수도 있습니다.
EXISTS mykey
다음과 같이 표시됩니다:
(integer) 1
이는 mykey라는 키가 존재함을 나타냅니다. 키가 존재하지 않으면 명령어는 (integer) 0을 반환합니다.
마지막으로 DEL 명령어를 사용하여 키를 삭제해 보겠습니다.
DEL mykey
다음과 같이 표시됩니다:
(integer) 1
이는 mykey 키가 성공적으로 삭제되었음을 나타냅니다.
이제 mykey의 값을 다시 가져오려고 시도하면:
GET mykey
다음과 같이 표시됩니다:
(nil)
이는 키가 삭제되었음을 확인해 줍니다.
명령어가 기록되도록 redis-cli를 종료하는 것을 잊지 마세요. 다음을 입력하세요:
exit
일반 터미널 프롬프트로 돌아갑니다.
LPUSH와 LRANGE를 사용한 리스트 활용
이 단계에서는 Redis 리스트를 사용하여 순서가 있는 데이터 컬렉션을 저장하고 검색하는 방법을 알아봅니다. Redis 리스트는 연결 리스트(linked list)로 구현되어 있어 리스트의 시작이나 끝에서 요소를 추가하고 제거하는 데 효율적입니다. 여기서는 LPUSH와 LRANGE 명령어에 집중합니다.
계속해서 redis-cli 명령줄 도구를 사용합니다. 아직 연결되어 있지 않다면 LabEx VM에서 터미널을 열고 다음을 입력하세요:
redis-cli
이제 LPUSH 명령어를 사용하여 리스트를 만들고 요소를 추가해 보겠습니다. LPUSH는 리스트의 왼쪽(헤드)에 요소를 추가합니다. LPUSH 명령어는 리스트의 키와 추가할 값(들)이라는 두 개 이상의 인자를 받습니다. mylist라는 리스트를 만들고 item1, item2, item3 값을 추가해 보겠습니다:
LPUSH mylist item1
다음과 같은 출력이 나타나야 합니다:
(integer) 1
이는 리스트에 하나의 요소가 추가되었음을 의미합니다. LPUSH의 반환 값은 작업 후 리스트의 길이입니다.
이제 나머지 항목들을 추가해 보겠습니다:
LPUSH mylist item2
(integer) 2
LPUSH mylist item3
(integer) 3
이제 LRANGE 명령어를 사용하여 리스트의 요소를 검색해 보겠습니다. LRANGE는 리스트에서 요소의 범위를 반환합니다. LRANGE 명령어는 리스트의 키, 시작 인덱스, 끝 인덱스라는 세 개의 인자를 받습니다. 인덱스는 0부터 시작하므로 첫 번째 요소는 인덱스 0에 위치합니다. 리스트의 모든 요소를 검색하려면 시작 인덱스 0과 끝 인덱스 -1을 사용할 수 있습니다.
LRANGE mylist 0 -1
다음과 같은 출력이 나타나야 합니다:
1) "item3"
2) "item2"
3) "item1"
LPUSH는 리스트의 시작 부분에 요소를 추가하기 때문에, 요소들이 우리가 추가한 순서의 역순으로 반환되는 것을 확인할 수 있습니다.
리스트에 몇 가지 항목을 더 추가해 보겠습니다:
LPUSH mylist item4
LPUSH mylist item5
이제 리스트의 처음 3개 요소(인덱스 0부터 2까지)를 검색해 보겠습니다:
LRANGE mylist 0 2
다음과 같이 표시됩니다:
1) "item5"
2) "item4"
3) "item3"
음수 인덱스를 사용하여 리스트의 끝에서부터 요소에 접근할 수도 있습니다. 예를 들어, 리스트의 마지막 요소를 검색하려면 인덱스 -1을 사용할 수 있습니다:
LRANGE mylist -1 -1
다음과 같이 표시됩니다:
1) "item1"
명령어가 기록되도록 redis-cli를 종료하는 것을 잊지 마세요. 다음을 입력하세요:
exit
일반 터미널 프롬프트로 돌아갑니다.
SADD와 SMEMBERS를 사용한 세트 관리
이 단계에서는 Redis 세트를 사용하여 고유한 요소들의 순서 없는 컬렉션을 저장하고 관리하는 방법을 알아봅니다. Redis 세트는 고유 방문자 추적, 태그 저장, 객체 간 관계 관리와 같은 작업에 유용합니다. 여기서는 SADD와 SMEMBERS 명령어에 집중합니다.
계속해서 redis-cli 명령줄 도구를 사용합니다. 아직 연결되어 있지 않다면 LabEx VM에서 터미널을 열고 다음을 입력하세요:
redis-cli
이제 SADD 명령어를 사용하여 세트를 만들고 멤버를 추가해 보겠습니다. SADD는 세트에 하나 이상의 멤버를 추가합니다. SADD 명령어는 세트의 키와 추가할 멤버(들)라는 두 개 이상의 인자를 받습니다. myset이라는 세트를 만들고 member1, member2, member3 멤버를 추가해 보겠습니다:
SADD myset member1
다음과 같은 출력이 나타나야 합니다:
(integer) 1
이는 세트에 하나의 멤버가 추가되었음을 의미합니다. SADD의 반환 값은 세트에 추가된 멤버의 수입니다(이미 존재하는 멤버는 제외).
이제 나머지 항목들을 추가해 보겠습니다:
SADD myset member2
(integer) 1
SADD myset member3
(integer) 1
이제 SMEMBERS 명령어를 사용하여 세트의 멤버를 검색해 보겠습니다. SMEMBERS는 세트의 모든 멤버를 반환합니다. SMEMBERS 명령어는 세트의 키라는 하나의 인자를 받습니다.
SMEMBERS myset
다음과 같은 출력이 나타나야 합니다(세트는 순서가 없으므로 멤버의 순서는 다를 수 있습니다):
1) "member3"
2) "member2"
3) "member1"
세트에 중복된 멤버를 추가해 보겠습니다:
SADD myset member1
다음과 같이 표시됩니다:
(integer) 0
이는 member1이 이미 세트에 존재하기 때문에 새로운 멤버가 추가되지 않았음을 나타냅니다.
세트에 몇 가지 멤버를 더 추가해 보겠습니다:
SADD myset member4
SADD myset member5
이제 모든 멤버를 다시 검색해 보겠습니다:
SMEMBERS myset
다음과 같이 표시될 것입니다:
1) "member5"
2) "member4"
3) "member3"
4) "member2"
5) "member1"
순서는 다를 수 있습니다.
명령어가 기록되도록 redis-cli를 종료하는 것을 잊지 마세요. 다음을 입력하세요:
exit
일반 터미널 프롬프트로 돌아갑니다.
HSET과 HGET을 사용한 해시 탐색
이 단계에서는 Redis 해시를 사용하여 필드-값 쌍의 컬렉션을 저장하고 검색하는 방법을 알아봅니다. Redis 해시는 여러 속성을 가진 객체를 표현하는 데 유용합니다. 여기서는 HSET과 HGET 명령어에 집중합니다.
계속해서 redis-cli 명령줄 도구를 사용합니다. 아직 연결되어 있지 않다면 LabEx VM에서 터미널을 열고 다음을 입력하세요:
redis-cli
이제 HSET 명령어를 사용하여 해시를 만들고 필드와 값을 추가해 보겠습니다. HSET은 해시 내 필드의 값을 설정합니다. HSET 명령어는 해시의 키, 필드, 값이라는 세 개의 인자를 받습니다. myhash라는 해시를 만들고 field1 필드를 value1 값으로 설정해 보겠습니다:
HSET myhash field1 value1
다음과 같은 출력이 나타나야 합니다:
(integer) 1
이는 해시에 새로운 필드가 추가되었음을 의미합니다. HSET의 반환 값은 필드가 해시에 새로 추가된 경우 1, 필드가 이미 존재하여 값이 업데이트된 경우 0입니다.
이제 다른 필드를 추가해 보겠습니다:
HSET myhash field2 value2
(integer) 1
이제 HGET 명령어를 사용하여 필드의 값을 검색해 보겠습니다. HGET은 해시 내 필드의 값을 가져옵니다. HGET 명령어는 해시의 키와 필드라는 두 개의 인자를 받습니다. myhash에서 field1의 값을 검색해 보겠습니다:
HGET myhash field1
다음과 같은 출력이 나타나야 합니다:
"value1"
이는 해시에 필드-값 쌍을 성공적으로 저장하고 검색했음을 확인해 줍니다.
기존 필드의 값을 업데이트해 보겠습니다:
HSET myhash field1 newvalue1
다음과 같이 표시됩니다:
(integer) 0
이는 필드가 이미 존재하며 그 값이 업데이트되었음을 나타냅니다.
이제 field1의 값을 다시 검색해 보겠습니다:
HGET myhash field1
다음과 같이 표시됩니다:
"newvalue1"
이는 값이 성공적으로 업데이트되었음을 확인해 줍니다.
해시에 몇 가지 필드를 더 추가해 보겠습니다:
HSET myhash field3 value3
HSET myhash field4 value4
명령어가 기록되도록 redis-cli를 종료하는 것을 잊지 마세요. 다음을 입력하세요:
exit
일반 터미널 프롬프트로 돌아갑니다.
요약
이 실습에서는 문자열을 시작으로 기본적인 Redis 데이터 구조를 살펴보았습니다. redis-cli를 사용하여 Redis 서버에 연결하는 방법을 배웠고, SET 명령어를 사용하여 키와 연결된 문자열 값을 저장했습니다. 그런 다음 GET 명령어를 사용하여 이러한 값을 검색했습니다. 또한 Redis가 문자열로 저장된 숫자를 어떻게 처리하는지도 확인했습니다.
더 나아가 LPUSH와 LRANGE를 사용하여 리스트를 생성 및 조작하고, SADD와 SMEMBERS로 세트를 관리하며, HSET과 HGET을 사용하여 해시를 탐색하는 방법을 배웠습니다. 이러한 명령어들을 통해 Redis에 다양한 유형의 데이터를 저장하고 검색할 수 있으며, 이는 Redis를 다양한 애플리케이션에서 활용할 수 있는 다재다능한 도구로 만들어 줍니다. 검증을 위해 명령어가 기록되도록 각 단계가 끝난 후 redis-cli를 종료하는 것을 잊지 마세요.


