Database/Redis

[Redis] 2. Understanding Data Types

noahkim_ 2024. 9. 5. 11:36

caching

queuing

event processing

 

1. String

  • byte sequence 저장
  • 문자열 매핑에 주로 사용됩니다. (key, value 모두 문자열)

 

Data Structure

  • Text
  • Serialized object
  • Binary array(image, video, audio)

 

Usage

  • cache
  • counters
  • bitwise operation

 

더보기
SET bike:1 Deimos # key(namespace:id) - value
GET bike:1 # Deimos

 

2. JSON

  • Syntax: JSONPath

 

Usage

  • API Response (cached)

 

더보기
JSON.SET user:1001 $ '{"name": "John Doe", "email": "john.doe@example.com", "age": 30}'
JSON.GET user:1001 $.name # John Doe

 

3. Lists

  • String 타입을 값으로 가지는 linked list

 

Data Structure

  • Stack
  • Queue
더보기
> LPUSH bikes:repairs bike:1
> LPUSH bikes:repairs bike:2
> RPOP bikes:repairs # "bike:1"
> RPOP bikes:repairs # "bike:2"

> LLEN bikes:repairs # 0
> LPUSH bikes:repairs bike:1
> LPUSH bikes:repairs bike:2
> LMOVE bikes:repairs bikes:finished LEFT LEFT # 왼쪽 끝의 것을 pop 해서 왼쪽에 push

> LRANGE bikes:repairs 0 -1   # "bike:1"
> LRANGE bikes:finished 0 -1  # "bike:2"
> RPUSH bikes:repairs bike:1 bike:2 bike:3 bike:4 bike:5
> LTRIM bikes:repairs 0 2 # 왼쪽으로부터 0~1 삭제
> LRANGE bikes:repairs 0 -1
1) "bike:1"
2) "bike:2"
3) "bike:3"

 

4. Set

  • 유일한 요소로 구성된 데이터 타입
  • 값 타입: String
  • 순서 없음

 

Usage
  • Index

 

Code
더보기
> SADD bikes:racing:france bike:1 # 1
> SADD bikes:racing:france bike:1 # 0
> SADD bikes:racing:france bike:2 bike:3 # 2
> SADD bikes:racing:usa bike:1 bike:4 # 2
> SADD bikes:racing:france bike:100
> SREM bikes:racing:france bike:100 # 1
> SMEMBERS bikes:racing:france # bike:1 bike:2 bike:3
> SISMEMBER bikes:racing:usa bike:1 # 1
> SISMEMBER bikes:racing:usa bike:2 # 0
> SINTER bikes:racing:france bikes:racing:usa # "bike:1"
> SDIFF bikes:racing:france bikes:racing:usa # bike:3, bike:2
> SUNION bikes:racing:france bikes:racing:usa bikes:racing:italy # bike:1 bike:2 bike:3 bike:4
> SCARD bikes:racing:france # 3

 

5. Hash

  • 객체 표현
    • field-value의 쌍으로 구성
    • 필드의 수는 제한이 없습니다.
  • 효율적으로 저장 및 관리가 가능합니다.

 

Usage
  • Counter

 

Code
더보기
> HSET bike:1 model Deimos brand Ergonom type 'Enduro bikes' price 4972
(integer) 4

> HGET bike:1 model
"Deimos"

> HGET bike:1 price
"4972"

> HGETALL bike:1
1) "model"
2) "Deimos"
3) "brand"
4) "Ergonom"
5) "type"
6) "Enduro bikes"
7) "price"
8) "4972"

> HMGET bike:1 model price no-such-field
1) "Deimos"
2) "4972"
3) (nil)
> HINCRBY bike:1 price 100
(integer) 5072

> HINCRBY bike:1 price -100
(integer) 4972

 

 

6. Sorted Set

  • 정렬 가능한 Set의 데이터 타입입니다.
  • 정렬 기준: 특정 value 지정
  • set과 hash가 섞인 데이터 타입이라 볼 수 있습니다.

 

Usage
  • Leaderboard
  • Rate limiter

 

Code
더보기
> ZADD racer_scores 10 "Norem"
(integer) 1
> ZADD racer_scores 12 "Castilla"
(integer) 1
> ZADD racer_scores 8 "Sam-Bodden" 10 "Royce" 6 "Ford" 14 "Prickett"
(integer) 4
> ZRANGE racer_scores 0 -1
1) "Ford"
2) "Sam-Bodden"
3) "Norem"
4) "Royce"
5) "Castilla"
6) "Prickett"

> ZREVRANGE racer_scores 0 -1
1) "Prickett"
2) "Castilla"
3) "Royce"
4) "Norem"
5) "Sam-Bodden"
6) "Ford"
> ZRANGE racer_scores 0 -1 withscores
 1) "Ford"
 2) "6"
 3) "Sam-Bodden"
 4) "8"
 5) "Norem"
 6) "10"
 7) "Royce"
 8) "10"
 9) "Castilla"
10) "12"
11) "Prickett"
12) "14"

> ZRANGEBYSCORE racer_scores -inf 10
1) "Ford"
2) "Sam-Bodden"
3) "Norem"
4) "Royce"
> ZRANK racer_scores "Norem"
(integer) 0

> ZREVRANK racer_scores "Norem"
(integer) 3
> ZREM racer_scores "Castilla" 
(integer) 1 

> ZREMRANGEBYSCORE racer_scores -inf 9 
(integer) 2

> ZRANGE racer_scores 0 -1 
1) "Norem"
2) "Royce"
3) "Prickett"

 

bitmaps - 대량의 데이터를 효율적으로 저장하고 관리하기 위한 도구입니다.
- String을 비트 벡터처럼 다루기 위한 bit-oriented 연산 지원.
- 특정 위치의 비트 값을 설정하는데 사용됩니다.
사이트 방문 여부
작업 수행 여부
SETBIT pings:01-01 123 1
GETBIT pings:01-01 123
GETBIT pings:01-01 456
hyperloglogs - 집합의 카디널리티를 추정하기 위한 확률적 데이터 타입입니다.
- 완벽한 정확성을 포기하고 메모리 효율성을 위해 설계되었습니다.
- 고정된 메모리 양을 사용하여 요소를 카운트합니다.
방문자 수 구하기 PFADD bikes Noah Deimo
PFCOUNT bikes
PFADD bikes2 Scala Qua
PFMERGE
all_bikes bikes bikes2
PFCOUNT all_bikes
geospatial index - 지리공간 인덱스 기능을 제공하는 데이터 타입입니다.
- 좌표를 저장 및 검색할 수 있습니다.
- 주어진 반경이나 경계 내에서 인접한 점을 찾는데 유용합니다.
지도 앱 GEOADD bikes
-122.27652 37.805186
station:1

GEOADD bikes
-122.2674626 37.806234
station:2

GEOADD bikes
-122.2469854 37.810404
station:3

GEOSEARCH bikes
FROMLONLAT -122 37
BYRADIUS 5km WITHDIST
Stream - 연속된 데이터 항목들을 저장하는 데이터 구조입니다.
- 마치 시간 순서대로 기록된 로그 파일과 유사합니다.
- 각 스트림 항목은 하나 이상의 필드-값 쌍으로 구성됩니다.
- 실시간 이벤트를 기록하고 동시에 전송할 수 있습니다.
- 각 스트림 항목에 대해 고유한 ID를 생성합니다.
- 여러가지 스트리밍 전략을 지원하여 스트림이 무제한으로 성장하는 것을 방지합니다.
이벤트 소싱
센서 모니터링
알람
XADD race*
rider noah
speed 30.2
position 1

XRANGE race 16926302-0 + COUNT 2

 

'Database > Redis' 카테고리의 다른 글

[Redis] 4. Use Redis  (0) 2024.09.05
[Redis] 3-1. Interact with Data: Search and query  (1) 2024.09.05
[Redis] 1. Introduction to Redis  (1) 2023.10.29