Home Redis 데이터 타입
Post
Cancel

Redis 데이터 타입

Redis란?

Redis의 다양한 데이터 타입

image

Redis - Strings

  • 일반적인 문자열
  • 값은 최대 512 MB이며, String으로 될 수 있는 binary data도, JPEDG 이미지도 저장 가능하다.
  • 단순 증감 연산에 좋음
  • stirng-string 매핑을 이용하여 연결되는 자료 매핑을 할 수 있다. HTML 매핑도 가능하다.

Strings 명령어 리스트

SET

image

GET

image

INCR, DECR

image

사용 방법

1
2
3
4
5
6
7
# 한개 조회
127.0.0.1:6379> set <key> <value>
127.0.0.1:6379> get <key> <value>

# 여러개 조회
127.0.0.1:6379> mset <key> <value> <key> <value> ...
127.0.0.1:6379> mget <key> <key> <key> ...

Lists

  • array 형식의 데이터 구조이며 데이터를 순서대로 저장한다.
  • 추가 / 삭제 / 조회하는 것은 O(1)의 속도를 가졌지만, 중간의 특정 index 값을 조회할 때는 O(N)의 속도를 가지는 단점이 있다.
  • 즉, 중간에 추가/삭제가 느리다. 따라서 head-tail에서 추가/삭제 한다. (push/pop 연산)
  • 메세지 queue로 사용하기 적절하다.

Lists 명령어 리스트

SET (PUSH)

image

GET

image

POP

image

REM

image

사용 방법

1
2
3
4
5
6
7
8
9
# 왼쪽에 삽입
127.0.0.1:6379> lpush <key> <value>

# 오른쪽에 삽입
127.0.0.1:6379> rpush <key> <value>

# 삭제
127.0.0.1:6379> lpop <key>
127.0.0.1:6379> rpop <key>

Sets

  • 중복된 데이터를 담지 않기 위해 사용하는 자료구조
  • 유니크한 key 값을 갖는다.
  • 정렬되지 않은 집합
  • 중복된 데이터를 여러번 저장하면 최종 한번만 저장된다.
  • Set간의 연산을 지원, 교집합, 합집합, 차이를 매우 빠른 시간내에 추출 할 수 있다.
  • 단, 모든 데이터를 전부 다 갖고 올 수 있는 명령이 있으므로 주의해서 사용해야 한다.

Sets 명령어 리스트

SET

image

GET

image

POP

image

REM

image

집합연산

image

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> sadd <key> <item>

# 존재 여부를 체크, 있으면 1 없으면 0 반환
127.0.0.1:6379> sismember <key> <item>

# 삭제
127.0.0.1:6379> srem <key> <value>

# key의 모든 item 조회
127.0.0.1:6379> smembers <key>

Sorted Sets

  • set에 score라는 필드가 추가된 데이터형 (score는 가중치라 이해하면 된다.)
  • 일반적으로 set은 정렬이 되어있지않고 insert한 순서대로 들어간다.
    그러나 Sorted Set은 Set의 특성을 그대로 가지며 추가적으로 저장된 member들의 순서도 관리한다.
  • 데이터가 저장될때부터 score 순으로 정렬되며 저장된다.
  • sorted set에서 데이터는 오름차순으로 내부 정렬 된다.
  • value는 중복 불가능, score는 중복 가능하다.
  • 만약 score 값이 같으면 사전 순으로 정렬되어 저장된다.

Sorted Sets 명령어 리스트

SET

image

GET

image

POP

image

REM

image

INCR

image

집합연산

image

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# ZADD : key에 score-member에 추가
127.0.0.1:6379> zadd people 1 kim
(integer) 1

# ZADD : 복수개의 key를 추가
127.0.0.1:6379> zadd people 2 hong 3 nam
(integer) 2

# ZRANGE : key에 해당하는 범위 출력
127.0.0.1:6379> zrange people 0 -1
1) "kim"
2) "hong"
3) "nam"

# ZADD : 중복 된 member를 add시 score update
127.0.0.1:6379> zadd people 10 kim
(integer) 0

# ZRANGE : key에 해당하는 범위 출력
127.0.0.1:6379> zrange people 0 -1
1) "hong"
2) "nam"
3) "kim"

# ZSCORE : member에 해당하는 score 값 리턴
127.0.0.1:6379> zscore people kim
"10"

# ZRANK : member에 해당하는 rank(순위) 값 리턴
127.0.0.1:6379> zrank people kim
(integer) 2

Hash

  • field-value로 구성 되어있는 전형적인 hash의 형태 (파이썬의 딕셔너리)
  • key 하위에 subkey를 이용해 추가적인 Hash Table을 제공하는 자료구조
  • 메모리가 허용하는 한, 제한없이 field들을 넣을 수가 있다.

Hash 명령어 리스트

SET

image

GET

image

REM

image

INCR

image

1
2
3
4
5
6
7
8
9
10
11
12
13
# 한개 값 삽입 및 삭제
127.0.0.1:6379> hset <key> <subkey> <value>
127.0.0.1:6379> hget <key> <subkey>

# 여러 값 삽입 및 삭제
127.0.0.1:6379> hmset <key> <subkey> <value> <subkey> <value> ...
127.0.0.1:6379> hnget <key> <subkey> <subkey> <subkey> ... 

# 모든 subkey와 value 가져오기, Collection에 너무 많은 key가 있으면 장애의 원인이 됨
127.0.0.1:6379> hgetall <key>

# 모든 value값만 가져오기
127.0.0.1:6379> hvlas <key>