소개
Field와 value로 구성?
Hashes는 key 하나에 여러개의 field와 value로 구성됩니다.
key 하나에 field와 value 쌍을 40억개(4,294,967,295)까지 저장 가능합니다.
Table과 Hash의 유사한 점
Hashes가 field와 value로 구성된다는 면에서 RDB의 table과 비슷합니다.
Hash key는 table의 PK, field는 column, value는 value로 보면 됩니다.
Key가 PK와 같은 역할을 하기 때문에 key 하나는 table의 한 row와 같습니다.
Table과 Hash의 다른 점
Table의 column 수는 일반적으로 제한이 있는 반면, Hash의 field 수는 40억개로 거의 무제한에 가깝습니다.
Table에서 column을 추가하려면 alter문으로 미리 table을 변경해야 하나, Hash에서는 그런 사전 작업이 필요없습니다. 따라서 field의 추가/삭제는 자유롭습니다. Field의 추가/삭제는 해당 key에만 영향을 미칩니다.
명령어 요약
- SET: HSET, HMSET, HSETNX
- GET: HGET, HMGET, HLEN, HKEYS, HVALS, HGETALL, HSTRLEN, HSCAN, HEXISTS
- REM: HDEL
- INCR: HINCRBY, HINCRBYFLOAT
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' 카테고리의 다른 글
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 |