Redis 데이터 타입과 활용 방법

Redis 데이터 타입과 활용 방법

3.1 String (기본적인 Key-Value 저장, TTL 설정)

Redis의 String 타입은 가장 기본적인 데이터 타입으로, Key-Value 형태로 데이터를 저장합니다. String은 텍스트, 숫자 등 다양한 형태의 데이터를 저장할 수 있습니다.

예시: 문자열 저장 및 조회

redis-cli set mykey "Hello, Redis!"
redis-cli get mykey

출력:

"Hello, Redis!"

TTL (Time to Live) 설정

Redis에서는 String에 TTL을 설정할 수 있어, 일정 시간이 지난 후 자동으로 삭제되게 할 수 있습니다. EX 옵션을 사용하여 TTL을 설정할 수 있습니다.

redis-cli setex mykey 10 "Temporary data"

위 명령어는 mykey를 10초 후에 자동으로 삭제되도록 설정합니다.

3.2 List (Queue, Stack처럼 활용)

Redis의 List순서가 있는 값들의 리스트를 저장할 수 있는 자료형입니다. List는 주로 큐(Queue)나 스택(Stack)처럼 활용됩니다. 양방향으로 값을 추가하거나 제거할 수 있습니다.

예시: 스택(Stack)처럼 사용

스택에서는 데이터를 뒤에서부터 추가하고 제거하는 방식인 LIFO (Last In First Out) 방식을 사용합니다.

redis-cli rpush mylist "Redis"
redis-cli rpush mylist "is"
redis-cli rpush mylist "awesome"

예시: 큐(Queue)처럼 사용

큐에서는 데이터를 앞에서부터 추가하고 제거하는 방식인 FIFO (First In First Out) 방식을 사용합니다.

redis-cli lpush mylist "First"
redis-cli lpush mylist "Second"
redis-cli lpush mylist "Third"

예시: 리스트 조회

redis-cli lrange mylist 0 -1

출력:

1) "Third"
2) "Second"
3) "First"

3.3 Set (중복 없는 데이터 저장, 집합 연산)

Redis의 Set중복을 허용하지 않는 데이터 집합입니다. 집합에 데이터를 추가할 때 중복되는 값은 자동으로 거부됩니다. Set을 사용하면 효율적으로 고유한 데이터를 관리할 수 있습니다.

예시: 중복 없는 데이터 저장

redis-cli sadd myset "apple"
redis-cli sadd myset "banana"
redis-cli sadd myset "apple"  # 중복된 값은 추가되지 않음

예시: Set 집합 연산

Redis는 집합 연산을 지원하여 여러 Set 간의 교집합, 합집합, 차집합 등을 처리할 수 있습니다.

redis-cli sunion myset myotherset  # 합집합
redis-cli sdiff myset myotherset  # 차집합
redis-cli sinter myset myotherset  # 교집합

3.4 Sorted Set (순위 기반 정렬)

Sorted Set은 각 요소에 **점수(score)**를 부여하여 자동으로 정렬된 집합을 만들 수 있습니다. 이를 통해 순위를 매기거나 시간 순으로 데이터를 정렬하는 등의 작업을 할 수 있습니다.

예시: 점수 기반 데이터 저장

redis-cli zadd mysortedset 10 "apple"
redis-cli zadd mysortedset 20 "banana"
redis-cli zadd mysortedset 30 "cherry"

예시: 데이터 조회 (점수에 따라 정렬)

redis-cli zrange mysortedset 0 -1  # 점수 순으로 오름차순 정렬

출력:

1) "apple"
2) "banana"
3) "cherry"

예시: 점수 기반 순위 조회

redis-cli zrevrange mysortedset 0 1  # 내림차순으로 상위 2개

3.5 Hash (객체 저장 및 조회)

HashKey-Value 형태의 데이터를 저장할 수 있는 데이터 구조입니다. Hash는 주로 객체를 저장하거나 여러 필드로 구성된 데이터를 관리할 때 유용합니다.

예시: 객체 저장

redis-cli hset user:1 name "John" age 30 city "New York"

예시: 객체 조회

redis-cli hgetall user:1

출력:

1) "name"
2) "John"
3) "age"
4) "30"
5) "city"
6) "New York"

3.6 Bitmaps (비트 연산을 통한 효율적인 저장)

Bitmap비트 연산을 활용해 효율적으로 데이터를 저장할 수 있는 자료형입니다. 주로 대규모의 트루/폴스 값을 저장할 때 사용됩니다.

예시: 비트 값 설정

redis-cli setbit mybitmap 7 1
redis-cli setbit mybitmap 8 1

예시: 비트 값 조회

redis-cli getbit mybitmap 7

출력:

1

3.7 HyperLogLog (고유 값 개수 추정)

HyperLogLog는 매우 큰 데이터셋에서 고유한 값의 개수를 정확하게 추정할 수 있는 자료형입니다. 이는 메모리 사용을 매우 적게 하면서도 대규모 데이터에 대해 유효한 개수 추정을 할 수 있게 도와줍니다.

예시: HyperLogLog 사용

redis-cli pfadd myhyperloglog "apple" "banana" "apple"
redis-cli pfcount myhyperloglog

출력:

2

3.8 Geo (위치 정보 저장 및 거리 계산)

Geo 자료형을 사용하면 위치 정보를 저장하고, 두 지점 간의 거리를 계산하는 등의 작업을 할 수 있습니다. 위치 데이터를 사용하여 지도 기반 애플리케이션을 만들 때 유용합니다.

예시: 위치 정보 추가

redis-cli geoadd mygeoset 13.361389 38.115556 "Sicily"
redis-cli geoadd mygeoset 15.087269 37.502669 "Catania"

예시: 거리 계산

redis-cli geodist mygeoset "Sicily" "Catania" km

출력:

166.2743
RSS Feed
마지막 수정일자