Redis 해시 자료 구조

이건·2024년 9월 18일

Redis

목록 보기
5/5

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

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

0개의 댓글