Redis에서 해시를 관리하는 방법


소개

해시는 문자열 필드와 문자열 값 간의 매핑을 나타내는 데이터 유형입니다. 해시는 많은 필드-값 쌍을 보유할 수 있으며 많은 공간을 차지하지 않도록 설계되어 데이터 개체를 나타내는 데 이상적입니다. 예를 들어 해시는 고객을 나타내고 name, address, email 또는 customer_id와 같은 필드를 포함할 수 있습니다.

이 튜토리얼에서는 Redis에서 해시를 생성하는 것부터 해시 내에 보관된 데이터를 검색하고 삭제하는 것까지 해시를 관리하는 방법에 대해 설명합니다.

이 가이드를 사용하는 방법

이 가이드는 자체 포함된 예제가 포함된 치트 시트로 작성되었습니다. 완료하려는 작업과 관련된 섹션으로 이동하는 것이 좋습니다.

이 가이드에 표시된 명령은 Redis 버전 6.0.16을 실행하는 Ubuntu 22.04 서버에서 테스트되었습니다. 유사한 환경을 설정하려면 예를 들어 Redli에 대한 가이드의 1단계를 따를 수 있습니다. 특정 명령의 정확한 출력은 다를 수 있습니다.

또는 관리형 Redis 데이터베이스 인스턴스를 프로비저닝하여 이러한 명령을 테스트할 수 있지만 데이터베이스 공급자가 허용하는 제어 수준에 따라 이 가이드의 일부 명령이 설명대로 작동하지 않을 수 있습니다. DigitalOcean 관리 데이터베이스를 프로비저닝하려면 TLS를 통해 관리 데이터베이스에 연결하기 위해 TLS 터널 설정을 따르십시오.

해시 생성

해시를 생성하려면 hset 명령을 실행합니다. 이 명령은 해시 키의 이름, 필드 문자열 및 해당 값 문자열을 인수로 허용합니다.

  1. hset poet:Verlaine nationality French

참고: 이 예와 다음 예에서 poet:Verlaine은 해시 키입니다. 점, 대시 및 콜론은 일반적으로 다중 단어 키와 필드를 더 읽기 쉽게 만드는 데 사용됩니다. 키가 일관되고 사람이 읽을 수 있는 형식을 따르는지 확인하는 것이 좋습니다.

hset는 지정된 필드가 새 필드이고 값이 올바르게 설정된 경우 (정수) 1을 반환합니다.

Output
(integer) 1

그러나 해시 키의 값, 필드 또는 이름을 포함하지 않으면 hset에서 오류를 반환합니다.

또한 hset는 해시가 이미 존재하는 경우 해시 내용을 덮어씁니다.

  1. hset poet:Verlaine nationality Francais

필드가 이미 존재하고 해당 값이 성공적으로 업데이트된 경우 hset(integer) 0을 반환합니다.

Output
(integer) 0

hsetnx를 사용하여 해시에 필드를 추가할 수도 있지만 필드가 아직 존재하지 않는 경우에만 작동합니다. 지정된 필드가 이미 존재하는 경우 hsetnx는 아무런 영향을 미치지 않으며 (integer) 0을 반환합니다.

  1. hsetnx poet:Verlaine nationality French
Output
(integer) 0

여러 필드/값 쌍을 지정된 세트로 설정하려면 hmset 명령 다음에 해당 필드/값 문자열을 사용하십시오.

  1. hmset poet:Verlaine born 1844 died 1896 genre Decadent

성공하면 hmsetOK를 반환합니다.

해시에서 정보 검색

hexists 명령을 사용하여 주어진 해시에 대한 필드가 존재하는지 확인할 수 있습니다.

  1. hexists poet:Verlaine nationality

hexists는 필드가 존재하면 (integer) 1을 반환하고, 그렇지 않으면 (integer) 0을 반환합니다.

필드 값을 반환하려면 hget 명령 다음에 해시 키와 검색하려는 값이 있는 필드를 실행합니다.

  1. hget poet:Verlaine nationality
Output
"Francais"

hmget은 동일한 구문을 사용하지만 여러 필드의 값을 반환할 수 있습니다.

  1. hmget poet:Verlaine born died
Output
1) "1844" 2) "1896"

hget 또는 hmget에 전달하는 해시가 존재하지 않는 경우 두 명령 모두 (nil)를 반환합니다.

  1. hmget poet:Dickinson born died
Output
1) (nil) 2) (nil)

특정 해시 내에 있는 모든 필드 목록을 얻으려면 hkeys 명령을 실행하십시오.

  1. hkeys poet:Verlaine
Output
1) "nationality" 2) "born" 3) "died" 4) "genre"

반대로 hvals를 실행하여 해시에 포함된 값 목록을 검색합니다.

  1. hvals poet:Verlaine
Output
1) "French" 2) "1844" 3) "1896" 4) "Decadent"

해시가 보유한 모든 필드 목록과 관련 값을 반환하려면 hgetall을 실행합니다.

  1. hgetall poet:Verlaine
Output
1) "nationality" 2) "French" 3) "born" 4) "1844" 5) "died" 6) "1896" 7) "genre" 8) "Decadent"

"해시 길이\를 나타내는 hlen을 실행하여 해시의 필드 수를 찾을 수 있습니다.

  1. hlen poet:Verlaine
Output
(integer) 4

"해시 문자열 길이\를 나타내는 hstrlen을 사용하여 필드와 연결된 값 문자열의 길이를 찾을 수 있습니다.

  1. hstrlen poet:Verlaine nationality
Output
(integer) 8

hlen은 해시가 존재하지 않는 경우 (integer) 0을 반환합니다.

해시에서 필드 제거

해시에서 필드를 삭제하려면 hdel 명령을 실행합니다. hdel은 여러 필드를 인수로 허용할 수 있으며 해시에서 제거된 필드 수를 나타내는 정수를 반환합니다.

  1. hdel poet:Verlaine born died
Output
(integer) 2

존재하지 않는 필드를 hdel에 전달하면 해당 필드는 무시되지만 지정한 다른 기존 필드는 삭제됩니다.

결론

이 가이드는 Redis에서 해시를 생성하고 관리하는 데 사용되는 여러 명령에 대해 자세히 설명합니다. 이 안내서에서 배우고 싶은 다른 관련 명령, 인수 또는 절차가 있으면 의견에 질문하거나 제안하십시오.

Redis 명령에 대한 자세한 내용은 Redis 데이터베이스를 관리하는 방법에 대한 자습서 시리즈를 확인하십시오.