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 (객체 저장 및 조회)
Hash
는 Key-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