hset
HSET
field 와 value를 저장
사용법은 hset key field value 이다.
key에 여러개의 field와 value를 저장할 수 있다. 기존에 같은 field가 있으면 덮어쓴다.
구조는 관계형 데이터베이스의 테이블과 비슷하다. 하지만 key마다 field가 달라도 된다.
Example
명령> | hset user-1 email charlie@redisgate.com |
결과> | 1 |
명령> | hset user-1 language english |
결과> | 1 |
명령> | hset user-1 gender m |
결과> | 1 |
명령> | hgetall user-1 |
결과> |
0) email -> charlie@redisgate.com
1) language -> english
2) gender -> m
|
애니메이션 보기
|
hgetall 명령을 실행하면 redis-cli는 field와 value가 각각 다른 line에 표시되는 반면,
Redis Web Client는 위 결과와 같이 한 line에 field -> value 형태로 표시된다.
|
버전 4.0.0부터 field와 value를 여러 개 입력할 수 있다.
버전 4.0.0부터는 hmset 대신 hset을 사용할 것을 권장한다.
Example
명령> | hset myhash f1 v1 f2 v2 |
결과> | 2 |
Subquery(서브쿼리) 기능
field value 부분에 서브쿼리를 사용해서 값을 넣을 수 있습니다.
서브쿼리로 사용할 수 있는 명령은 GET, MGET, HGET, HMGET, HGETALL 입니다.
GET, MGET은 key가 field로 들어간다.
Example
명령> | set key Hello |
결과> | OK |
명령> | hset myhash (get key) |
결과> | 1 |
명령> | hgetall myhash |
결과> | 1) "key"
2) "Hello" |
서브쿼리에 다양한 명령을 사용해서 여러 개 값을 넣을 수 있습니다.
Example
명령> | hset myhash (mget key1 key2) |
결과> | 2 |
명령> | hset myhash (hget myhash1 field) |
결과> | 1 |
명령> | hset myhash (hmget myhash1 field1 field2) |
결과> | 2 |
명령> | hset myhash (hgetall myhash2) |
결과> | 10 |
서브쿼리는 하나만 사용할 수 있습니다.
서브쿼리 기능은 Enterprise 서버에서 사용 가능합니다.
Enterprise 7.2.0까지는 HSET 명령에서 사용할 수 있고,
이후 버전에서는 HSETS 명령으로 분리되었습니다.
|
멤버(member) 자동 삭제(만료 시간 설정) 기능
입력하는 멤버에 만료 시간을 설정해서 자동 삭제할 수 있습니다.
이것은 기존에 hset(입력)과 expire를 각각 했던 것을 한 명령으로 만들었습니다.
Example
명령> | hset myhash f1 v1 f2 v2 f3 v3 ex 10 |
결과> | 3 |
| 10초 후 |
명령> | hgetall myhash |
결과> | (empty list or set) |
서브쿼리에도 사용할 수 있습니다.
Example
명령> | hset myhash (get key) ex 10 |
결과> | 1 |
명령> | hset myhash (hgetall myhash2) ex 10 |
결과> | 10 |
명령문
HSET key field value [field value ...] [ex seconds]
- 이 명령은 version 2.0.0 부터 사용할 수 있습니다.
- 논리적 처리 소요시간은 O(1)입니다.
- 서브쿼리와 멤버 자동 삭제 기능은 Enterprise 서버에서 사용할 수 있습니다.