Redis에서 해시를 관리하는 방법
소개
해시는 문자열 필드와 문자열 값 간의 매핑을 나타내는 데이터 유형입니다. 해시는 많은 필드-값 쌍을 보유할 수 있으며 많은 공간을 차지하지 않도록 설계되어 데이터 개체를 나타내는 데 이상적입니다. 예를 들어 해시는 고객을 나타내고 name
, address
, email
또는 customer_id
와 같은 필드를 포함할 수 있습니다.
이 튜토리얼에서는 Redis에서 해시를 생성하는 것부터 해시 내에 보관된 데이터를 검색하고 삭제하는 것까지 해시를 관리하는 방법에 대해 설명합니다.
이 가이드를 사용하는 방법
이 가이드는 자체 포함된 예제가 포함된 치트 시트로 작성되었습니다. 완료하려는 작업과 관련된 섹션으로 이동하는 것이 좋습니다.
이 가이드에 표시된 명령은 Redis 버전 6.0.16을 실행하는 Ubuntu 22.04 서버에서 테스트되었습니다. 유사한 환경을 설정하려면 예를 들어 Redli에 대한 가이드의 1단계를 따를 수 있습니다. 특정 명령의 정확한 출력은 다를 수 있습니다.
또는 관리형 Redis 데이터베이스 인스턴스를 프로비저닝하여 이러한 명령을 테스트할 수 있지만 데이터베이스 공급자가 허용하는 제어 수준에 따라 이 가이드의 일부 명령이 설명대로 작동하지 않을 수 있습니다. DigitalOcean 관리 데이터베이스를 프로비저닝하려면 TLS를 통해 관리 데이터베이스에 연결하기 위해 TLS 터널 설정을 따르십시오.
해시 생성
해시를 생성하려면 hset
명령을 실행합니다. 이 명령은 해시 키의 이름, 필드 문자열 및 해당 값 문자열을 인수로 허용합니다.
- hset poet:Verlaine nationality French
참고: 이 예와 다음 예에서 poet:Verlaine
은 해시 키입니다. 점, 대시 및 콜론은 일반적으로 다중 단어 키와 필드를 더 읽기 쉽게 만드는 데 사용됩니다. 키가 일관되고 사람이 읽을 수 있는 형식을 따르는지 확인하는 것이 좋습니다.
hset
는 지정된 필드가 새 필드이고 값이 올바르게 설정된 경우 (정수) 1
을 반환합니다.
Output(integer) 1
그러나 해시 키의 값, 필드 또는 이름을 포함하지 않으면 hset
에서 오류를 반환합니다.
또한 hset
는 해시가 이미 존재하는 경우 해시 내용을 덮어씁니다.
- hset poet:Verlaine nationality Francais
필드가 이미 존재하고 해당 값이 성공적으로 업데이트된 경우 hset
는 (integer) 0
을 반환합니다.
Output(integer) 0
hsetnx
를 사용하여 해시에 필드를 추가할 수도 있지만 필드가 아직 존재하지 않는 경우에만 작동합니다. 지정된 필드가 이미 존재하는 경우 hsetnx
는 아무런 영향을 미치지 않으며 (integer) 0
을 반환합니다.
- hsetnx poet:Verlaine nationality French
Output(integer) 0
여러 필드/값 쌍을 지정된 세트로 설정하려면 hmset
명령 다음에 해당 필드/값 문자열을 사용하십시오.
- hmset poet:Verlaine born 1844 died 1896 genre Decadent
성공하면 hmset
는 OK
를 반환합니다.
해시에서 정보 검색
hexists
명령을 사용하여 주어진 해시에 대한 필드가 존재하는지 확인할 수 있습니다.
- hexists poet:Verlaine nationality
hexists
는 필드가 존재하면 (integer) 1
을 반환하고, 그렇지 않으면 (integer) 0
을 반환합니다.
필드 값을 반환하려면 hget
명령 다음에 해시 키와 검색하려는 값이 있는 필드를 실행합니다.
- hget poet:Verlaine nationality
Output"Francais"
hmget
은 동일한 구문을 사용하지만 여러 필드의 값을 반환할 수 있습니다.
- hmget poet:Verlaine born died
Output1) "1844"
2) "1896"
hget
또는 hmget
에 전달하는 해시가 존재하지 않는 경우 두 명령 모두 (nil)
를 반환합니다.
- hmget poet:Dickinson born died
Output1) (nil)
2) (nil)
특정 해시 내에 있는 모든 필드 목록을 얻으려면 hkeys
명령을 실행하십시오.
- hkeys poet:Verlaine
Output1) "nationality"
2) "born"
3) "died"
4) "genre"
반대로 hvals
를 실행하여 해시에 포함된 값 목록을 검색합니다.
- hvals poet:Verlaine
Output1) "French"
2) "1844"
3) "1896"
4) "Decadent"
해시가 보유한 모든 필드 목록과 관련 값을 반환하려면 hgetall
을 실행합니다.
- hgetall poet:Verlaine
Output1) "nationality"
2) "French"
3) "born"
4) "1844"
5) "died"
6) "1896"
7) "genre"
8) "Decadent"
"해시 길이\를 나타내는 hlen
을 실행하여 해시의 필드 수를 찾을 수 있습니다.
- hlen poet:Verlaine
Output(integer) 4
"해시 문자열 길이\를 나타내는 hstrlen
을 사용하여 필드와 연결된 값 문자열의 길이를 찾을 수 있습니다.
- hstrlen poet:Verlaine nationality
Output(integer) 8
hlen
은 해시가 존재하지 않는 경우 (integer) 0
을 반환합니다.
해시에서 필드 제거
해시에서 필드를 삭제하려면 hdel
명령을 실행합니다. hdel
은 여러 필드를 인수로 허용할 수 있으며 해시에서 제거된 필드 수를 나타내는 정수를 반환합니다.
- hdel poet:Verlaine born died
Output(integer) 2
존재하지 않는 필드를 hdel
에 전달하면 해당 필드는 무시되지만 지정한 다른 기존 필드는 삭제됩니다.
결론
이 가이드는 Redis에서 해시를 생성하고 관리하는 데 사용되는 여러 명령에 대해 자세히 설명합니다. 이 안내서에서 배우고 싶은 다른 관련 명령, 인수 또는 절차가 있으면 의견에 질문하거나 제안하십시오.
Redis 명령에 대한 자세한 내용은 Redis 데이터베이스를 관리하는 방법에 대한 자습서 시리즈를 확인하십시오.