반응형
해시데이터에 대해서..
- 해시 데이터는 문자열 필드와 값으로 이루어진 Map 구조로 되어 있음.
- 해시 데이터에는 2의 32승-1 개의 필드와 값을 저장할 수 있음.
- 숫자로 바꾸어보면...대략 42억개가 넘게됨...^^;
- 해시 명령의 시간 복잡도는 O(1)
- 단, hgetall/hkeys/hvals Redis 명령은 제외.
- 해시 데이터의 저장 구조
-
- Key 하나에 여러 개의 Field-Value 쌍으로 이루어짐.
- 즉, 일반적으로 프로그램 언어의 Map 자료구조와 동일함.
- Key 하나에 여러 개의 Field-Value 쌍으로 이루어짐.
-
해시 데이터의 명령어
- 그룹데이터 저장
- 해시 데이터를 생성 및 삭제하는 명령은 아래와 같음.
- hmset
- 명령) hmset [key] [field1] [value1] [field2] [value2] ....
- 응답) <상태응답>, 항상 OK
- hmget
- 명령) hmget [key] [field1] [field2] ....
- 응답) <멀티벌크응답>, 주어진 필드의 값
- hlen
- 명령) hlen [key]
- 응답) <숫자응답>, 주어진 해시에 저장된 필드 개수
- hdel
- 명령) hdel [key]
- 응답) <숫자응답>, 삭제된 필드의 수
- 예시
-
- hmset 은 주어진 key 에 대해서 다중 field 값을 저장하는 용도임.
- hmget 을 사용해서 저장된 사용자의 정보를 조회할 수 있음.
- hlen 은 현재 저장된 사용자의 field 수를 조회함
- hdel를 사용해서 현재 저장된 field 를 삭제할 수 있음.
-
- hmset
- 해시 데이터를 생성 및 삭제하는 명령은 아래와 같음.
- 숫자의 증감
- 해시에 저장된 데이터의 field 값이 숫자일 경우, hincrby, hincrbyfloat 명령으로 증감 처리를 할 수 있음.
- 문자열 데이터에서 지원하는 숫자 증감 명령와는 다르게 해시 데이터에서는 증가 명령만 지원하며, 숫자의 감소를 처리하려면, 명령의 인자값에 음수를 주면됨.
- hincrby
- 명령) hincrby [key] [field] [value]
- 응답) <숫자응답>, 명령이 수행되고 난 후의 필드 값.
- hincrbyfloat
- 명령) hincrbyfloat [key] [field] [value]
- 응답) <숫자응답>, 명령이 수행되고 난 후의 필드 값.
- 예시
- hincrby
- 해시 데이터의 Key 목록 조회
- 해시 데이터에 저장된 모든 Key의 목록과 모든 값의 목록을 조회 할때는 아래 명령을 사용함
- hgetall
- 기존 연재된 "02.Redis, 레디스의 기본명령어에 대해서 알아볼까요?"를 참고 부탁드려요^^;
- hgetall
- key 의 목록이나 값의 목록만을 조회 할때는 아래 명령을 사용함.
- hkeys
- 명령) hkeys [key]
- 응답) <멀티벌크응답>, 주어진 키에 저장된 모든 필드 목록
- hvals
- 명령) hvals [key]
- 응답) <멀티벌크응답>, 주어진 키에 저장된 모든 값 목록
- hkeys
- 예시
- 해시 데이터에 저장된 모든 Key의 목록과 모든 값의 목록을 조회 할때는 아래 명령을 사용함
- 해시데이터 관련 참고페이지
결론
- Redis 에는 프로그램언어에서 사용하는 Map 과 같은 해시 데이터 타입을 가지고 있음.
- 주의해야할 사항은 만약 수천 개의 필드가 저장된 해시 데이터에서 hkeys, hvals와 같은 명령을 실행하면 다른 클라이언트의 응답 속도에 영향을 미치게 되어 사용에 유의해야함.
- 왜냐하면, 해당 명령어의 시간복잡도 가 O(N) 이기 때문에..
- 첨언하자면, O(N)은 저장된 필드 수가 많으면 많을 수록 응답 속도가 더욱 느려짐. 저장된 필드의 개수와 응답속도의 관계는 비례하기 때문에...
- 왜냐하면, 해당 명령어의 시간복잡도 가 O(N) 이기 때문에..
- 오늘의 명언 한마디
- 우리의 사고 방식이 우리를 부자로 만든다. 그리고, 투자도 각자에게 맞는 투자가 있다. -로버트 기요사키, 『부자아빠, 가난한아빠3』 중에서...
- 오늘의 영어 한마디
- 질문) I'm really upset about this.
- 으, 정말 열 받아!
- 응답) What happened?
- 왜그래?
- 해설)
- be upset 은 "흥분(분계)하다" 로 정말 열 받는다 라는 의미.
- upset 대신에, mad 또는 angry 를 쓸수있음.
- 질문) I'm really upset about this.
300x250
'좋아하는 것_매직IT > 9.redis' 카테고리의 다른 글
12.Redis, 정렬된 셋 데이터에 대해서 알아보자. (0) | 2021.01.14 |
---|---|
11.Redis, 셋 데이터에 대해서 알아보자. (0) | 2021.01.14 |
9.Redis, 문자열 데이터에 대해서 알아보자. (0) | 2021.01.14 |
8.Redis, 레디스의 데이터 구조 그리고 키는 어떻게 설계할까요? (0) | 2021.01.13 |
7.Redis, 그러면..언제 NoSQL을 사용해야 할까요? ^-^ (0) | 2021.01.13 |