Redis 기본 데이터 관리

RedisBeginner
지금 연습하기

소개

이 랩에서는 Redis 에서 기본적인 데이터 관리 기술을 탐구합니다. 먼저, 카운터 및 속도 제한기에 적합한 원자적 (atomic) INCRDECR 명령을 사용하여 숫자 값을 증가시키고 감소시키는 방법을 배웁니다. redis-cli를 사용하여 Redis 서버에 연결하고 초기 값을 설정한 다음, 값을 증가시키고 감소시켜 GET 명령으로 결과를 확인합니다.

또한, KEYS 명령을 사용하여 Redis 에 저장된 모든 키를 검색하는 방법을 배웁니다.

INCR/DECR 로 값 증가 및 감소

이 단계에서는 INCRDECR 명령을 사용하여 Redis 에 저장된 숫자 값을 증가시키고 감소시키는 방법을 배웁니다. 이러한 명령은 원자적 (atomic) 이므로 다른 클라이언트의 간섭 없이 실행이 보장되어 카운터 및 속도 제한기와 같은 작업에 적합합니다.

먼저, 터미널에서 redis-cli 명령을 사용하여 Redis 서버에 연결해 보겠습니다.

redis-cli

이제 mycounter라는 키를 초기 값 10으로 설정해 보겠습니다. 이렇게 하면 Redis 데이터베이스에 키 - 값 쌍이 생성됩니다. 키는 mycounter이고 값은 10입니다.

SET mycounter 10

키가 성공적으로 설정되었음을 확인하는 다음 출력을 볼 수 있습니다.

OK

INCR 명령은 키의 값을 1 씩 증가시킵니다. mycounter를 증가시켜 보겠습니다.

INCR mycounter

출력은 증가된 값입니다.

(integer) 11

값을 확인하려면 GET 명령을 사용할 수 있습니다.

GET mycounter

출력은 다음과 같아야 합니다.

"11"

DECR 명령은 키의 값을 1 씩 감소시킵니다. mycounter를 감소시켜 보겠습니다.

DECR mycounter

출력은 감소된 값입니다.

(integer) 10

다시, GET으로 값을 확인합니다.

GET mycounter

출력은 다음과 같아야 합니다.

"10"

키가 존재하지 않는 경우, INCRDECR은 해당 키가 값 0 을 포함하는 것으로 처리합니다. 존재하지 않는 키 newcounter를 증가시켜 보겠습니다.

INCR newcounter

출력은 다음과 같습니다.

(integer) 1

이제 newcounter의 값을 확인합니다.

GET newcounter

출력은 다음과 같아야 합니다.

"1"

마찬가지로, 존재하지 않는 키를 감소시키면 0 으로 처리하고 -1 로 감소시킵니다.

DECR anothercounter

출력은 다음과 같습니다.

(integer) -1
GET anothercounter

출력은 다음과 같아야 합니다.

"-1"

마지막으로, redis-cli를 종료합니다.

exit

명령 기록이 제대로 기록되도록 명령을 완료한 후 redis-cli를 종료하는 것이 중요합니다.

KEYS 명령어로 모든 키 검색

이 단계에서는 KEYS 명령을 사용하여 Redis 에 저장된 모든 키를 검색하는 방법을 배웁니다. KEYS는 개발 및 디버깅에 유용하지만, 모든 키를 반복하는 동안 서버를 차단할 수 있으므로 대규모 데이터 세트가 있는 프로덕션 환경에서는 일반적으로 권장되지 않습니다.

먼저, redis-cli를 사용하여 Redis 서버에 연결합니다.

redis-cli

이전 단계에서 mycounter, newcounter, anothercounter와 같은 여러 키를 만들었습니다. 예제를 더 흥미롭게 만들기 위해 몇 개의 키를 더 추가해 보겠습니다.

SET user:1000:name "John"
SET user:1000:age 30
SET user:1001:name "Jane"

이제 * 패턴과 함께 KEYS 명령을 사용하여 데이터베이스의 모든 키를 검색합니다.

KEYS *

출력은 모든 키의 목록이 됩니다.

1) "anothercounter"
2) "user:1000:age"
3) "user:1001:name"
4) "mycounter"
5) "newcounter"
6) "user:1000:name"

키의 순서는 다를 수 있습니다.

특정 패턴과 일치하는 키를 검색하기 위해 패턴을 사용할 수도 있습니다. 예를 들어, user:로 시작하는 모든 키를 검색하려면 다음 명령을 사용합니다.

KEYS user:*

출력은 다음과 같습니다.

1) "user:1000:age"
2) "user:1001:name"
3) "user:1000:name"

또 다른 예로, counter를 포함하는 모든 키를 검색하려면 다음 명령을 사용합니다.

KEYS *counter*

출력은 다음과 같습니다.

1) "anothercounter"
2) "mycounter"
3) "newcounter"

대규모 데이터베이스에서 KEYS *를 사용하면 성능에 영향을 미칠 수 있음을 기억하십시오. 프로덕션 환경의 경우, 비차단 방식으로 키 공간을 반복하는 SCAN을 사용하는 것을 고려하십시오.

마지막으로, redis-cli를 종료합니다.

exit

TYPE 명령어로 데이터 타입 확인

이 단계에서는 TYPE 명령을 사용하여 Redis 에 저장된 키의 데이터 유형을 확인하는 방법을 배웁니다. Redis 는 문자열, 목록, 집합, 정렬된 집합 및 해시를 포함한 다양한 데이터 유형을 지원합니다. 키의 데이터 유형을 이해하는 것은 해당 키에 적절한 작업을 수행하는 데 매우 중요합니다.

먼저, redis-cli를 사용하여 Redis 서버에 연결합니다.

redis-cli

이전 단계에서 서로 다른 값을 가진 여러 키를 만들었습니다. 해당 데이터 유형을 확인해 보겠습니다.

먼저, mycounter 키의 데이터 유형을 확인해 보겠습니다.

TYPE mycounter

출력은 다음과 같습니다.

string

이는 mycounter가 숫자 값을 포함하고 있음에도 불구하고 문자열로 저장됨을 나타냅니다. Redis 는 SET을 사용할 때 숫자 값을 자동으로 문자열로 변환합니다.

다음으로, user:1000:name 키의 데이터 유형을 확인해 보겠습니다.

TYPE user:1000:name

출력은 다음과 같습니다.

string

이 또한 user:1000:name이 문자열로 저장됨을 나타냅니다.

이제 nonexistentkey와 같이 존재하지 않는 키의 데이터 유형을 확인해 보겠습니다.

TYPE nonexistentkey

출력은 다음과 같습니다.

none

이는 키가 데이터베이스에 존재하지 않음을 나타냅니다.

데이터 유형을 더 자세히 설명하기 위해 목록을 만들어 보겠습니다.

LPUSH mylist "item1"
LPUSH mylist "item2"

이제 mylist의 데이터 유형을 확인합니다.

TYPE mylist

출력은 다음과 같습니다.

list

이는 mylist가 목록으로 저장됨을 확인합니다.

마찬가지로, 집합, 정렬된 집합 및 해시와 같은 다른 데이터 유형을 만들고 TYPE 명령을 사용하여 해당 유형을 확인할 수 있습니다. 예를 들어:

SADD myset "member1"
SADD myset "member2"
TYPE myset

출력은 다음과 같습니다.

set
ZADD mysortedset 1 "element1"
ZADD mysortedset 2 "element2"
TYPE mysortedset

출력은 다음과 같습니다.

zset
HSET myhash field1 "value1"
HSET myhash field2 "value2"
TYPE myhash

출력은 다음과 같습니다.

hash

마지막으로, redis-cli를 종료합니다.

exit

FLUSHDB 명령어로 데이터 삭제

이 단계에서는 FLUSHDB 명령을 사용하여 현재 선택된 Redis 데이터베이스에서 모든 데이터를 삭제하는 방법을 배웁니다. 이 명령은 개발 또는 테스트 중에 데이터베이스를 재설정하는 데 유용합니다. 프로덕션 환경에서는 데이터베이스의 모든 데이터를 영구적으로 삭제하므로 이 명령을 주의해서 사용하십시오.

먼저, redis-cli를 사용하여 Redis 서버에 연결합니다.

redis-cli

데이터베이스를 플러시하기 전에 키가 있는지 확인해 보겠습니다. KEYS * 명령을 사용합니다.

KEYS *

mycounter, newcounter, user:1000:name, mylist와 같이 이전 단계에서 생성한 키 목록이 표시됩니다.

이제 FLUSHDB 명령을 실행합니다.

FLUSHDB

출력은 다음과 같습니다.

OK

이는 데이터베이스가 성공적으로 플러시되었음을 나타냅니다.

데이터베이스가 이제 비어 있는지 확인하기 위해 KEYS * 명령을 다시 사용합니다.

KEYS *

출력은 빈 목록이 됩니다.

(empty array)

이는 모든 키가 데이터베이스에서 제거되었음을 확인합니다.

FLUSHDB는 현재 선택된 데이터베이스만 지운다는 것을 이해하는 것이 중요합니다. Redis 는 여러 데이터베이스 (기본적으로 0 에서 15 까지 번호가 매겨짐) 를 지원합니다. 모든 데이터베이스를 지우려면 FLUSHALL 명령을 사용할 수 있습니다. 그러나 의도하지 않은 데이터 손실을 방지하기 위해 이 랩에서는 FLUSHALL을 사용하지 않습니다.

마지막으로, redis-cli를 종료합니다.

exit

요약

이 랩에서는 Redis 에서 기본적인 데이터 관리 기술을 배웠습니다. 구체적으로, 카운터 및 속도 제한기를 구현하는 데 유용한 원자적 (atomic) INCRDECR 명령을 사용하여 숫자 값을 증가시키고 감소시키는 연습을 했습니다. 또한 키가 존재하지 않는 경우, 이러한 명령이 해당 키를 값 0 을 포함하는 것으로 처리한다는 것을 배웠습니다.

또한 Redis 에 저장된 모든 키를 검색하기 위한 KEYS 명령을 소개받았습니다. 개발 및 디버깅에는 유용하지만, 대규모 데이터 세트가 있는 프로덕션 환경에서는 일반적으로 권장되지 않습니다. 마지막으로, 데이터 유형을 확인하고 데이터베이스를 지우는 방법을 배웠습니다.