Redis Hash를 이용해서 하나의 key에 대한 값으로 여러 개의 sub key & value를 저장 할 수 있다. RDBMS의 테이블과 매우 비슷하다. 개인정보를 저장해야 한다고 하면 아래와 같은 Hash 테이블을 만들 수 있을 것이다.
User_ID
Email
Name
Age
Address
yundream
yundream@gmail.com
Yun.Dream
42
Seoul
foo
foo@gmail.com
Lee.foo
34
Pusan
bar
bar@gmail.com
Kim.bar
26
Seoul
Redis Hash에서 User_ID가 key가 되고 email, name, age, address는 sub key가 된다.
hmset을 이용해서 Hash 데이터를 저장 할 수 있다. 위 테이블에 있는 데이터를 저장해보자.
172.17.0.2:6379> hmset yundream email "yundream@gmail.com" name "Yun.Dream" age 42 address "Seoul"
OK
172.17.0.2:6379> hmset foo email "foo@gmail.com" name "Lee.foo" age 34 address "Pusan"
OK
172.17.0.2:6379> hmset bar email "bar@gmail.com" name "Kim.bar" age 26 address "Seoul"
OK
Hash는 많은 변에서 Redis의 가장 일반적인 사용모습을 보여준다. 일단 명령셋이 String과 비슷해서, SET, GET, DEL 3개의 명령을 제공한다. 가장 일반적이면서도 가장 널리 사용되기도 하는데, RDBMS의 테이블과 유사한 데이터를 저장 할 수 있어서 응용범위가 넓기 때문이다. Hash 자료를 위해서 제공하는 명령은 아래와 같다.
HSET : Hash에 key와 value를 저장한다. 이미 key가 존재할 경우 특정 subkey만 추가하거나 업데이트 할 수 있다.
HMSET : 여러 개의 subkey를 한번에 설정한다.
HGET : Key로 Hash 값을 가져온다. subkey를 설정해야 한다.
HMGET : 여러 개의 subkey를 가져올 수 있다.
HGETALL : Key로 Hash의 모든 subkey의 값을 가져온다.
HDEL : Hash 특정 subkey를 삭제한다. Hash key를 지우고 싶다면 DEL 명령을 사용해야 한다.
어떤 자료구조를 선택해야 하느냐가 약간 고민이 될 수 있을 것 같다.
해시는 매우 작은 공간에 인코딩 되므로 가능한 해시를 사용해서 데이터를 표현하는게 좋다. 예를 들어 이름, 이메일, 세션 등을 이용하는 웹 응용 서비스를 만들어야 한다면, 필수 필드를 모두 포함한 단일 해시를 사용하는게 낫다. Redis의 string을 이용 할 경우 같은 데이터를 저장하기 위해서 더 많은 공간을 써야 한다. 해시로 데이터 구조를 만들면 의미론적으로도 깔끔하고 쓰기, 검색 속도 모두 빠르게 할 수 있다.
예를 들어 아래와 같은 데이터를 저장해야 한다고 가정해보자.
Field
타입
키
설명
UserID
string
O
유저아이디
Email
string
X
이메일
Session
string
X
세션
Gender
string
X
성별
Time
string
X
로그인 시간
String 타입으로는 아래와 같이 입력해야 할 것이다.
> SET user:1132:email yundream@gmail.com
> SET user:1132:session xxxxx
> SET user:1132:gender man
> SET time:1132:time 1561197174
Contents
Hash
string vs hash
응용
쇼핑카트
참고
Recent Posts
Archive Posts
Tags