Hashes는 key 하나에 여러개의 field와 value로 구성됩니다.
key 하나에 field와 value 쌍을 40억개(4,294,967,295)까지 저장 가능합니다.
Hashes가 field와 value로 구성된다는 면에서 RDB의 table과 비슷합니다.
Hash key는 table의 PK, field는 column, value는 value로 보면 됩니다.
Key가 PK와 같은 역할을 하기 때문에 key 하나는 table의 한 row와 같습니다.
Table의 column 수는 일반적으로 제한이 있는 반면, Hash의 field 수는 40억개로 거의 무제한에 가깝습니다.
Table에서 column을 추가하려면 alter문으로 미리 table을 변경해야 하나, Hash에서는 그런 사전 작업이 필요없습니다. 따라서 field의 추가/삭제는 자유롭습니다. Field의 추가/삭제는 해당 key에만 영향을 미칩니다.
1. HSET key field value : key에 값 저장.
HMSET key field1 value1 field2 value2 ... : 여러개 저장.
key에 여러개의 field와 value를 저장할 수 있다.
기존에 같은 field가 있으면 덮어쓴다.
RDB와 비슷하다. but! key마다 field가 달라도 된다.
명령> 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
4.0버전부터 field와 value를 여러개 입력할 수 있다.
명령> hset myhash f1 v1 f2 v2
결과> 2
HSET key field value [field value ...]
2. HDEL key field : field, value 삭제.
field 여러개 지정 할 수 있다.
명령> hgetall user-1
결과> 0) email -> charlie@redisgate.com
1) language -> english
2) gender -> m
명령> hdel user-1 language
결과> 1
명령> hdel user-1 email gender
결과> 2
3. HGET key field : field로 value 조회.
HMGET key field1 field2 : 여러개 조회.
HGETALL key : key에 속한 모든 field와 value조회.
명령> hgetall user-1
결과> 0) email -> charlie@redisgate.com
1) language -> English
2) gender -> m
명령> hget user-1 language
결과> English
명령> hget user-1 email
결과> charlie@redisgate.com
4. HLEN key : field의 개수 조회.
5. HKEYS key : key에 속한 모든 field name 조회.
field name은 입력된 순서대로 조회됨.
명령> hkeys user-1
결과> 1) email
2) language
3) gender
명령> hmset user-2 gender f name sally language Korean
결과> 3
명령> hkeys user-2
결과> 1) gender
2) name
3) language
6. HVALS key
value는 입력된 순서대로 조회됨.
명령> hvals user-1
결과> 1) charlie@redisgate.com
2) English
3) M
명령> hmset user-2 gender F name Sally language Korean
결과> 3
명령> hvals user-2
결과> 1) F
2) Sally
3) Korean
7. HSTRLEN key field : value의 길이 조회.
명령> hgetall user-1
결과> 0) email -> charlie@redisgate.com
1) language -> English
2) gender -> M
명령> hstrlen user-1 email
결과> 21
명령> hstrlen user-1 gender
결과> 1
8. HINCRBY key field increment(정수.음수ok) : 정수만큼 증감
HINCRBYFLOAT key field float(실수.음수 ok) : 실수만큼 증
해당 field가 없으면 increment값을 set한다.
명령> hincrby user-1 visits 1
결과> 1
명령> hincrby user-1 visits 5
결과> 6
명령> hincrby user-1 visits -10
결과> -4
9. HEXISTS key field : field 있는지 조회.
있으면 1 반환.
없으면 0 반환.
명령> hexists user-1 email
결과> 1
명령> hexists user-1 xxx
결과> 0
10. HSETNX key field value : field가 기존에 없으면 저장.
기존에 같은 field가 있으면 저장하지 않음.
명령> hsetnx user-1 email help@redisgate.com
결과> 0
명령> hsetnx user-1 email2 help@redisgate.com
결과> 1
11. HSCAN key cursor : field, value를 일정 단위만큼 조회.
명령> hmset myhash f1 v1 f2 v2 f3 v3 c4 v4 c5 v5 c6 v6
결과> OK
명령> hscan myhash 0
결과> next cursor -> 0
0) f1 -> v1
1) f2 -> v2
2) f3 -> v3
3) c4 -> v4
4) c5 -> v5
5) c6 -> v6
count, pattern옵션 사용 가능
명령> hscan myzip 0 count 5
결과> next cursor -> 0
0) f1 -> v1
1) f2 -> v2
2) f3 -> v3
3) c4 -> v4
4) c5 -> v5
5) c6 -> v6
명령> hscan myset 0 match c*
결과> next cursor -> 0
0) c4 -> v4
1) c5 -> v5
2) c6 -> v6
HSCAN key cursor [MATCH pattern] [COUNT count]
12. HRANDFIELD key : 랜덤 field 조회.
명령> hmset myhash f1 v1 f2 v2 f3 v3 f4 v4 f5 v5 f6 v6
결과> OK
명령> hrandfield myhash
결과> f3
count옵션 사용가는.
+count는 필드를 중복하지 않고 조회한다.
필드수 보다 더 큰 count를 지정했을 경우 필드수 만큼 조회.
-count는 필드를 중복해서 조회한다.
필드수 보다 더 큰 count를 지정했을 경우 count수 만큼 조회.
withvalues 옵션은 count를 사용했을 경우만 사용할 수 있다.
명령> hrandfield myhash 3
결과> 1) "f6"
2) "f5"
3) "f3"
명령> hrandfield myhash -3
결과> 1) "f2"
2) "f4"
3) "f4"
HRANDFIELD key [count [WITHVALUES]]
| Redis - sentinel (1) | 2024.06.18 |
|---|---|
| Redis - Sorted Sets (0) | 2024.06.16 |
| Redis - Sets (0) | 2024.06.16 |
| Redis - Lists 데이터 타입, 명령어 (3) | 2024.06.16 |
| Redis - String 데이터 타입, 명령어 (1) | 2024.06.16 |