
Redis에서는 해시로 중첩된 키-값 쌍의 모음을 저장할 수 있다.
예를 들어, 키 company에 해시 자료 구조가 저장되어 있다. 키 name의 값은 Concrete Co.이고 키 createdAt의 값은 1915이고 키 industry의 값은 concrete이다.

해시의 일반적인 사용 예시는 Entiry의 정보를 저장하는 것이다.
해시에 특정 사용자의 정보를 저장하거나, 특정 게시물의 정보 또는 특정 이미지의 정보를 저장할 수 있다.
주의할 점은 아래와 같이 해시를 사용해 여러 단계로 중첩된 키-값 쌍은 저장할 수 없다.
{
"name": "Concrete Co",
"created": 1915,
"industry": {
"primary": "materials",
"secondary": "concrete"
}
}
또한, 아래와 같이 배열을 값으로 가질 수도 없다.
{
"name": "Concrete Co",
"created": 1915,
"industries": {
{ "name": "materials" },
{ "name": "concrete" }
}
}
해시의 키-값 쌍에서는 오직 숫자 또는 문자열만 값이 될 수 있다.
해시를 다루는 명령어

HSET과 HGET, HGETALL은 문자열에서 사용하던 GET이나 SET과 유사하다.
HSET

HSET company name 'Concrete Co' createdAt 1915 → 키 name에 값 'Company Co'가 저장되고 키 age에 1915가 저장된다.

결과값으로 나오는 숫자 2는 업데이트 되는 키-값 쌍의 개수를 의미한다.

키-값 쌍을 더 추가해도 새롭게 업데이트 되는 개수는 2개이기 때문에 2가 결과값으로 나온다.

추가되는 키-값 쌍 없이 다시 명령어를 실행하면 업데이트 되는 개수가 없기 때문에 0이 나온다.
HGET
HGET company name → company의 키 name의 값을 가져온다

HGETALL

HGET company → company의 전체 해시가 반환된다.
이때, 마치 반환값이 JSON의 형태로 반환되는 것처럼 보이지만 사실 Redis가 반환하는 건

이런식의 값의 배열이다. 배열에는 키, 값이 반복적으로 담겨 있고 특정 프로그래밍 언어의 라이브러리에서는 이 같은 배열이 반환되므로 직접 키-값 쌍을 객체로 변환해야 하는 경우도 있다.
HEXISTS
HEXISTS는 기존 해시에 키가 정의되어 있는지 확인한다.
HEXISTS company age → company에 저장된 해시에 키 age가 정의되어 있는지 확인한다. age가 해시 안에 있다면 1을 반환하고 없다면 0을 반환한다.
이때 Redis는 키 age에 저장된 값을 검증하지 않는다.
키 age의 값에 빈 문자열이나, 0, false 같은 잘못된 값이 저장되어 있더라도 키의 존재만을 확인하므로 1을 반환한다.


DEL
문자열의 명령어와 동일하게 작동하며 해당 키에 저장된 해시 전체를 삭제한다.
DEL company → company에 저장된 해시 전체를 삭제한다.


company가 삭제되었으니 빈 배열이 나온다.
HDEL
HDEL을 사용하면 해시에 저장된 키-값 쌍 하나를 삭제한다.
HDEL company age → company에 저장된 키 age와 값인 1915를 삭제한다.

HINCRBY
HINCRBY company age 10 → company에 저장된 해시에서 키 age를 찾아 값에 10을 더한다.
만약 company에 키 age가 존재하지 않는 경우 새로운 키 age를 만들고 값으로 10을 할당한다.
숫자를 음수로 하면 기존 값에서 음수만큼 뺄 수 있다.

age키가 존재하지 않으니 새로 age-10의 키-값 쌍이 추가되었다.

age키가 이미 존재할 경우 10을 더한다.
HINCRBYFLOAT
HINCRFLOAT company age 1.004 → company에 저장된 해시에서 키 age를 찾아 값에 1.004를 더한다.

HSTRLEN
해시에 저장된 문자열의 길이를 가져온다.
HSTRLEN company name → company에 저장된 해시에서 키 name을 찾아 값의 문자열 길이를 반환한다.

HKEYS
해시에 저장된 모든 키를 가져온다.

HVALS
해시에 저장된 모든 값을 가져온다.
