Redis 고급 키 관리

RedisBeginner
지금 연습하기

소개

이 랩에서는 Redis 에서 고급 키 관리 기술을 탐구합니다. 먼저 RENAME 명령을 사용하여 키 이름을 변경하는 방법을 배우고, redis-cli를 통해 Redis 서버에 연결하고, 키 - 값 쌍을 설정한 다음 이름을 변경하고, 변경 사항을 확인하는 것으로 시작합니다.

다음으로, MOVE 명령을 사용하여 서로 다른 Redis 데이터베이스 간에 키를 이동하는 방법을 알아봅니다. 이 랩에서는 Redis 인스턴스 내에서 한 데이터베이스에서 다른 데이터베이스로 키를 전송하는 과정을 안내합니다. 또한 여러 키를 설정하고 검색하며 키를 효율적으로 반복하는 방법도 다룹니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 90%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

RENAME 으로 키 이름 변경

이 단계에서는 RENAME 명령을 사용하여 Redis 에서 키 이름을 변경하는 방법을 배웁니다. 키 이름 변경은 오타 수정, 데이터 재구성 또는 애플리케이션 변경 사항을 반영하도록 키 이름 업데이트 등 다양한 이유로 유용할 수 있습니다.

먼저, Redis 명령줄 인터페이스 (redis-cli) 를 사용하여 Redis 서버에 연결해 보겠습니다. ~/project 디렉토리에서 터미널을 열고 다음 명령을 입력합니다.

redis-cli

Redis 프롬프트 127.0.0.1:6379>가 표시됩니다.

이제 이름을 변경할 수 있는 키 - 값 쌍을 설정해 보겠습니다. SET 명령을 사용하여 mykey라는 키를 값 myvalue로 생성합니다.

SET mykey myvalue

출력으로 OK가 표시됩니다.

키가 올바르게 설정되었는지 확인하려면 GET 명령을 사용합니다.

GET mykey

출력으로 "myvalue"가 표시됩니다.

이제 RENAME 명령을 사용하여 mykey 키의 이름을 newkey로 변경해 보겠습니다.

RENAME mykey newkey

출력으로 OK가 표시됩니다.

키 이름이 변경되었는지 확인하려면 이전 키 (mykey) 의 값을 가져오십시오.

GET mykey

출력으로 (nil)이 표시됩니다. 이는 키가 더 이상 존재하지 않음을 의미합니다.

이제 새 키 (newkey) 의 값을 가져오십시오.

GET newkey

출력으로 "myvalue"가 표시됩니다. 이는 키 이름이 성공적으로 변경되었음을 확인합니다.

마지막으로, 다음 단계를 위해 newkey 키의 이름을 다시 mykey로 변경해 보겠습니다.

RENAME newkey mykey

출력으로 OK가 표시됩니다.

키 이름이 다시 변경되었는지 확인합니다.

GET mykey

출력으로 "myvalue"가 표시됩니다.

exit를 입력하거나 Ctrl+D를 눌러 redis-cli를 종료하는 것을 잊지 마십시오. 이렇게 하면 명령이 제대로 기록됩니다.

exit

이제 RENAME 명령을 사용하여 Redis 에서 키 이름을 성공적으로 변경했습니다.

MOVE 로 데이터베이스 간 키 이동

이 단계에서는 MOVE 명령을 사용하여 한 Redis 데이터베이스에서 다른 데이터베이스로 키를 이동하는 방법을 배웁니다. Redis 는 단일 인스턴스 내에서 여러 논리적 데이터베이스를 지원합니다. 기본적으로 0 에서 15 까지 번호가 매겨진 16 개의 데이터베이스가 있습니다. MOVE 명령을 사용하면 현재 선택된 데이터베이스에서 다른 데이터베이스로 키를 전송할 수 있습니다.

먼저, Redis 명령줄 인터페이스 (redis-cli) 를 사용하여 Redis 서버에 연결되어 있는지 확인합니다. ~/project 디렉토리에서 터미널을 열고 다음 명령을 입력합니다.

redis-cli

Redis 프롬프트 127.0.0.1:6379>가 표시됩니다. 기본적으로 데이터베이스 0 에 연결됩니다.

이전 단계에서 데이터베이스 0 에 값 myvalue를 가진 mykey라는 키가 이미 있습니다. 이를 확인해 보겠습니다.

GET mykey

출력으로 "myvalue"가 표시됩니다.

이제 MOVE 명령을 사용하여 mykey 키를 데이터베이스 0 에서 데이터베이스 1 로 이동해 보겠습니다.

MOVE mykey 1

출력으로 (integer) 1이 표시됩니다. 이는 키가 성공적으로 이동되었음을 의미합니다.

키가 이동되었는지 확인하려면 데이터베이스 0 에서 mykey 키의 값을 가져오십시오.

GET mykey

출력으로 (nil)이 표시됩니다. 이는 키가 더 이상 데이터베이스 0 에 존재하지 않음을 의미합니다.

이제 SELECT 명령을 사용하여 데이터베이스 1 로 전환합니다.

SELECT 1

출력으로 OK가 표시됩니다.

이제 데이터베이스 1 에서 mykey 키의 값을 가져오십시오.

GET mykey

출력으로 "myvalue"가 표시됩니다. 이는 키가 데이터베이스 1 로 성공적으로 이동되었음을 확인합니다.

마지막으로, 다음 단계를 위해 mykey 키를 다시 데이터베이스 0 으로 이동해 보겠습니다. 먼저, 데이터베이스 0 으로 다시 전환합니다.

SELECT 0

출력으로 OK가 표시됩니다.

이제 mykey 키를 데이터베이스 1 에서 데이터베이스 0 으로 이동합니다.

MOVE mykey 0

출력으로 (error) ERR source and destination objects are the same이 표시됩니다.

이 오류는 동일한 세션에서 SELECT 0을 수행한 다음 MOVE mykey 0을 수행했기 때문에 발생합니다. MOVE 명령은 현재 있는 동일한 데이터베이스로 키를 이동할 수 없습니다.

키를 다른 데이터베이스로 이동하려면 먼저 대상 데이터베이스를 선택한 다음 MOVE 명령을 사용해야 합니다.

예를 들어, 먼저 데이터베이스 1 을 선택합니다.

SELECT 1

출력으로 OK가 표시됩니다.

이제 mykey 키를 데이터베이스 1 에서 데이터베이스 0 으로 이동합니다.

MOVE mykey 0

출력으로 (integer) 1이 표시됩니다. 이는 키가 성공적으로 이동되었음을 의미합니다.

이제 데이터베이스 0 으로 다시 전환합니다.

SELECT 0

키가 데이터베이스 0 으로 다시 돌아왔는지 확인합니다.

GET mykey

출력으로 "myvalue"가 표시됩니다.

exit를 입력하거나 Ctrl+D를 눌러 redis-cli를 종료하는 것을 잊지 마십시오. 이렇게 하면 명령이 제대로 기록됩니다.

exit

이제 MOVE 명령을 사용하여 Redis 데이터베이스 간에 키를 성공적으로 이동했습니다.

MSET 으로 여러 키 설정

이 단계에서는 Redis 에서 MSET 명령을 사용하여 여러 키와 해당 값을 단일 명령으로 설정하는 방법을 배웁니다. 이는 여러 SET 명령을 사용하는 것보다 효율적입니다. Redis 서버로의 왕복 횟수를 줄이기 때문입니다.

먼저, Redis 명령줄 인터페이스 (redis-cli) 를 사용하여 Redis 서버에 연결되어 있는지 확인합니다. 아직 연결되지 않은 경우 ~/project 디렉토리에서 터미널을 열고 다음 명령을 입력합니다.

redis-cli

Redis 프롬프트 127.0.0.1:6379>가 표시됩니다.

이전 단계에서 데이터베이스 0 에 값 myvalue를 가진 mykey라는 키가 이미 있습니다. 이제 MSET 명령을 사용하여 key1key2라는 두 개의 키를 각각 value1value2 값으로 설정해 보겠습니다.

MSET key1 value1 key2 value2

출력으로 OK가 표시됩니다. 이는 키가 성공적으로 설정되었음을 의미합니다.

키가 올바르게 설정되었는지 확인하려면 각 키에 대해 GET 명령을 사용합니다.

GET key1

출력으로 "value1"이 표시됩니다.

GET key2

출력으로 "value2"가 표시됩니다.

이제 MSET을 사용하여 mykey를 포함한 세 개의 키를 설정해 보겠습니다.

MSET mykey newvalue key3 value3 key4 value4

출력으로 OK가 표시됩니다.

값을 확인합니다.

GET mykey

출력으로 "newvalue"가 표시됩니다.

GET key3

출력으로 "value3"이 표시됩니다.

GET key4

출력으로 "value4"가 표시됩니다.

exit를 입력하거나 Ctrl+D를 눌러 redis-cli를 종료하는 것을 잊지 마십시오. 이렇게 하면 명령이 제대로 기록됩니다.

exit

이제 MSET 명령으로 여러 키를 성공적으로 설정했습니다.

MGET 으로 여러 키 조회

이 단계에서는 Redis 에서 MGET 명령을 사용하여 단일 명령으로 여러 키의 값을 검색하는 방법을 배웁니다. 이는 여러 GET 명령을 사용하는 것보다 효율적입니다. Redis 서버로의 왕복 횟수를 줄이기 때문입니다.

먼저, Redis 명령줄 인터페이스 (redis-cli) 를 사용하여 Redis 서버에 연결되어 있는지 확인합니다. ~/project 디렉토리에서 터미널을 열고 다음 명령을 입력합니다.

redis-cli

Redis 프롬프트 127.0.0.1:6379>가 표시됩니다.

이전 단계에서 다음과 같은 키와 값을 가지고 있습니다.

  • mykey: newvalue
  • key1: value1
  • key2: value2
  • key3: value3
  • key4: value4

이제 MGET 명령을 사용하여 key1, key2, mykey의 값을 검색해 보겠습니다.

MGET key1 key2 mykey

출력은 다음과 같습니다.

1) "value1"
2) "value2"
3) "newvalue"

이 출력은 MGET 명령에 지정된 순서대로 키의 값을 보여줍니다.

이제 MGET 명령을 사용하여 key3, key4 및 존재하지 않는 키 key5의 값을 검색해 보겠습니다.

MGET key3 key4 key5

출력은 다음과 같습니다.

1) "value3"
2) "value4"
3) (nil)

존재하지 않는 키 key5의 값은 (nil)입니다.

exit를 입력하거나 Ctrl+D를 눌러 redis-cli를 종료하는 것을 잊지 마십시오. 이렇게 하면 명령이 제대로 기록됩니다.

exit

이제 MGET 명령으로 여러 키를 성공적으로 검색했습니다.

SCAN 명령어로 키 효율적으로 순회

이 단계에서는 SCAN 명령을 사용하여 Redis 에서 키를 효율적으로 반복하는 방법을 배웁니다. 대규모 데이터베이스에서 사용될 경우 서버를 차단할 수 있는 KEYS 명령과 달리, SCAN은 커서 기반 반복자 (cursor-based iterator) 로, 키를 일괄적으로 검색하여 성능에 미치는 영향을 최소화합니다.

먼저, Redis 명령줄 인터페이스 (redis-cli) 를 사용하여 Redis 서버에 연결되어 있는지 확인합니다. ~/project 디렉토리에서 터미널을 열고 다음 명령을 입력합니다.

redis-cli

Redis 프롬프트 127.0.0.1:6379>가 표시됩니다.

이전 단계에서 다음과 같은 키를 가지고 있습니다.

  • mykey
  • key1
  • key2
  • key3
  • key4

SCAN 명령은 초기 커서 값 (cursor value) 이 필요하며, 일반적으로 0입니다. 다음 반복을 위한 새로운 커서 값과 현재 반복에서 발견된 키 목록을 반환합니다.

커서 0으로 반복을 시작해 보겠습니다.

SCAN 0

다음과 유사한 출력을 볼 수 있습니다.

1) "0"
2) 1) "key2"
   2) "key3"
   3) "key4"
   4) "key1"
   5) "mykey"

출력의 첫 번째 요소 ("0") 는 커서 값입니다. 두 번째 요소는 이 반복에서 발견된 키의 배열입니다. 반환된 커서가 0이므로, 이는 반복이 완료되었고 단일 스캔에서 모든 키를 검색했음을 나타냅니다.

MATCH 옵션을 사용하여 패턴을 기반으로 키를 필터링할 수도 있습니다. 예를 들어, key로 시작하는 모든 키를 찾으려면 다음 명령을 사용합니다.

SCAN 0 MATCH key*

다음과 유사한 출력을 볼 수 있습니다.

1) "0"
2) 1) "key2"
   2) "key3"
   3) "key4"
   4) "key1"

커서는 "0"이므로 반복이 완료되었으며, 패턴 "key*"와 일치하는 키만 반환되는 것을 확인할 수 있습니다 ("mykey" 제외).

COUNT 옵션을 사용하여 단일 호출에서 검색하려는 요소 수를 Redis 에 힌트 (hint) 를 줄 수도 있습니다. 이는 단지 힌트일 뿐이며, Redis 는 더 많거나 적은 요소를 반환할 수 있습니다. 예를 들어:

SCAN 0 COUNT 3

다음과 유사한 출력을 볼 수 있습니다.

1) "6"
2) 1) "key2"
   2) "key3"
   3) "key4"

이 경우, 스캔할 키가 더 있음을 나타내는 새로운 커서 값 "6"을 얻습니다. 이 새로운 커서 값을 사용하여 커서가 "0"이 될 때까지 반복을 계속합니다.

exit를 입력하거나 Ctrl+D를 눌러 redis-cli를 종료하는 것을 잊지 마십시오. 이렇게 하면 명령이 제대로 기록됩니다.

exit

이제 SCAN 명령을 사용하여 Redis 에서 키를 성공적으로 반복했습니다.

요약

이 랩에서는 Redis 에서 고급 키 관리 작업을 수행하는 방법을 배웠습니다. 특히, RENAME 명령을 사용하여 키의 식별자를 변경하면서 관련 값을 보존하는 방법을 배웠습니다. 또한 이전 및 새 키 이름을 모두 사용하여 값을 검색하여 성공적인 이름 변경을 확인하고, 작업 후 키의 존재 여부와 값을 확인하는 연습을 했습니다. 마지막으로, 후속 단계를 위해 키를 원래 이름으로 다시 변경했습니다.

이 랩에서는 또한 Redis 데이터베이스의 개념과 단일 Redis 인스턴스 내에서 이러한 논리적 데이터베이스 간에 키를 전송할 수 있는 MOVE 명령을 소개했습니다. MSET 명령을 사용하여 여러 키를 한 번에 효율적으로 설정하고, MGET 명령을 사용하여 해당 값을 검색하는 방법을 배웠습니다. 마지막으로, 서버를 차단하지 않고 대규모 데이터베이스에서 키를 반복하는 강력한 도구인 SCAN 명령을 탐색했습니다. 각 단계를 완료한 후에는 항상 redis-cli를 종료하여 명령이 확인을 위해 기록되도록 하는 것을 잊지 마십시오.