Redis의 자료 구조와 명령어 사용 예시
1. String
- 기본적인 자료 구조로, 단일 키에 대해 최대 512MB의 문자열 데이터를 저장할 수 있다.
SET key "value" # key에 value를 설정한다
GET key # key의 값을 가져온다
INCR counter # counter의 값을 1 증가시킨다
DECR counter # counter의 값을 1 감소시킨다

2. List
- 순서가 있는 문자열 목록을 저장한다. 최대 4,294,967,295개의 아이템을 저장할 수 있다.
LPUSH mylist "A" # mylist의 왼쪽에 "A"를 추가한다
RPUSH mylist "B" # mylist의 오른쪽에 "B"를 추가한다
LPOP mylist # mylist의 왼쪽에서 첫 번째 요소를 제거하고 반환한다
RPOP mylist # mylist의 오른쪽에서 첫 번째 요소를 제거하고 반환한다
LRANGE mylist 0 -1 # mylist의 모든 요소를 가져온다





3. Hash
- 필드-값 쌍으로 구성된 맵을 저장한다. 하나의 키에 여러 필드와 값을 저장할 수 있다.
HSET myhash field1 "value1" # myhash에 field1을 value1로 설정한다
HGET myhash field1 # myhash에서 field1의 값을 가져온다
HGETALL myhash # myhash의 모든 필드와 값을 가져온다
HDEL myhash field1 # myhash에서 field1을 제거한다


4. Set
- 중복되지 않는 문자열의 집합을 저장한다. 순서가 없으며, 집합 연산을 지원한다.
SADD myset "A" # myset에 "A"를 추가한다
SREM myset "A" # myset에서 "A"를 제거한다
SMEMBERS myset # myset의 모든 요소를 가져온다
SUNION set1 set2 # set1과 set2의 합집합을 가져온다


5. Sorted Set
- 점수와 함께 저장된 요소들을 포함한다. 요소들은 점수에 따라 정렬된다.
ZADD myzset 1 "A" # myzset에 점수 1과 함께 "A"를 추가한다
ZINCRBY myzset 1 "A" # myzset에서 "A"의 점수를 1 증가시킨다
ZRANGE myzset 0 -1 # myzset의 모든 요소를 점수 순으로 가져온다
ZREM myzset "A" # myzset에서 "A"를 제거한다




6. Bitmap
- 비트 맵을 사용하여 데이터를 비트 단위로 저장한다.
SETBIT mybitmap 1 1 # mybitmap의 1번 비트를 1로 설정한다
GETBIT mybitmap 1 # mybitmap의 1번 비트 값을 가져온다
BITCOUNT mybitmap # mybitmap에서 1로 설정된 비트의 개수를 세어 반환한다

7. HyperLogLog
- 대용량 데이터의 중복되지 않는 요소 개수를 추정할 수 있다.
PFADD myhll "A" "B" "C" # myhll에 "A", "B", "C"를 추가한다
PFCOUNT myhll # myhll의 고유 요소 개수를 추정하여 반환한다

8. Geospatial
- 지리적 데이터를 저장하고 처리할 수 있다.
GEOADD mygeo 13.361389 38.115556 "Palermo" # mygeo에 Palermo의 위치를 추가한다
GEODIST mygeo "Palermo" "Catania" km # Palermo와 Catania 사이의 거리를 km 단위로 반환한다
GEOSEARCH mygeo FROMMEMBER "Palermo" BYRADIUS 100 km # Palermo를 기준으로 반경 100km 내의 위치를 검색한다

9. Stream
- 메시지 브로커와 유사하게 작동하며 실시간 데이터를 처리할 수 있다.
XADD mystream * name "Alice" age 30 # mystream에 메시지를 추가한다
XREAD COUNT 2 STREAMS mystream 0 # mystream에서 메시지 2개를 읽는다

Redis의 Key 관리 명령어
1. 키의 생성과 삭제
- 키가 존재하지 않을 때 아이템을 넣으면 빈 자료 구조를 생성한다.
DEL mylist # mylist를 삭제한다
LPUSH mylist 1 2 3 # mylist에 1, 2, 3을 추가한다 (키가 자동으로 생성됨)
2. 키의 조회
- EXISTS 명령어로 키가 존재하는지 확인한다.
- KEYS 명령어로 패턴에 맞는 모든 키를 조회한다.
- SCAN 명령어로 대량의 키를 점진적으로 조회할 수 있다.
EXISTS mylist # mylist가 존재하는지 확인한다
KEYS * # 모든 키를 조회한다
SCAN 0 # 모든 키를 점진적으로 조회한다

3. SORT 명령어
- 리스트, 세트, 정렬된 세트를 정렬하여 조회할 수 있다.
SORT mylist # mylist를 정렬한다
4. RENAME 명령어
- 키의 이름을 변경한다.
RENAME oldkey newkey # oldkey의 이름을 newkey로 변경한다
5. COPY 명령어
- 키를 복사한다.
COPY source destination # source 키를 destination 키로 복사한다
6. OBJECT 명령어
- 키에 대한 상세 정보를 반환한다.
OBJECT ENCODING mykey # mykey의 인코딩 정보를 반환한다
7. FLUSHALL 명령어
- 모든 키를 삭제한다.
FLUSHALL # 모든 키를 삭제한다
8. UNLINK 명령어
- 비동기적으로 키를 삭제한다.
UNLINK mykey # mykey를 비동기적으로 삭제한다
9. EXPIRE 명령어
- 키의 만료 시간을 설정한다.
EXPIRE mykey 60 # mykey의 만료 시간을 60초로 설정한다
10. TTL 명령어
- 키의 남은 유효 기간을 조회한다.
TTL mykey # mykey의 남은 유효 기간을 조회한다
참고 자료
개발자를 위한 레디스 | 김가림 - 교보문고
개발자를 위한 레디스 | 개발자가 인메모리 데이터베이스인 레디스를 잘 활용할 수 있도록 초점을 맞춘 포괄적인 안내서다. 레디스를 처음 배우는 독자나 NoSQL 데이터베이스의 개념을 쌓고자 하
product.kyobobook.co.kr
GitHub - redis/redis-doc: Redis documentation source code for markdown and metadata files, conversion scripts, and so forth
Redis documentation source code for markdown and metadata files, conversion scripts, and so forth - redis/redis-doc
github.com
'기술 탐구 > redis' 카테고리의 다른 글
Redis는 I/O 이벤트 통지 메커니즘, epoll에 대해 알아보자 (0) | 2025.04.03 |
---|---|
(Redis) 레디스를 캐시로 사용하기 (0) | 2024.06.27 |
(Redis) 레디스 자료 구조 활용법 (사례) (0) | 2024.06.25 |
Redis의 자료 구조와 명령어 사용 예시
1. String
- 기본적인 자료 구조로, 단일 키에 대해 최대 512MB의 문자열 데이터를 저장할 수 있다.
SET key "value" # key에 value를 설정한다
GET key # key의 값을 가져온다
INCR counter # counter의 값을 1 증가시킨다
DECR counter # counter의 값을 1 감소시킨다

2. List
- 순서가 있는 문자열 목록을 저장한다. 최대 4,294,967,295개의 아이템을 저장할 수 있다.
LPUSH mylist "A" # mylist의 왼쪽에 "A"를 추가한다
RPUSH mylist "B" # mylist의 오른쪽에 "B"를 추가한다
LPOP mylist # mylist의 왼쪽에서 첫 번째 요소를 제거하고 반환한다
RPOP mylist # mylist의 오른쪽에서 첫 번째 요소를 제거하고 반환한다
LRANGE mylist 0 -1 # mylist의 모든 요소를 가져온다





3. Hash
- 필드-값 쌍으로 구성된 맵을 저장한다. 하나의 키에 여러 필드와 값을 저장할 수 있다.
HSET myhash field1 "value1" # myhash에 field1을 value1로 설정한다
HGET myhash field1 # myhash에서 field1의 값을 가져온다
HGETALL myhash # myhash의 모든 필드와 값을 가져온다
HDEL myhash field1 # myhash에서 field1을 제거한다


4. Set
- 중복되지 않는 문자열의 집합을 저장한다. 순서가 없으며, 집합 연산을 지원한다.
SADD myset "A" # myset에 "A"를 추가한다
SREM myset "A" # myset에서 "A"를 제거한다
SMEMBERS myset # myset의 모든 요소를 가져온다
SUNION set1 set2 # set1과 set2의 합집합을 가져온다


5. Sorted Set
- 점수와 함께 저장된 요소들을 포함한다. 요소들은 점수에 따라 정렬된다.
ZADD myzset 1 "A" # myzset에 점수 1과 함께 "A"를 추가한다
ZINCRBY myzset 1 "A" # myzset에서 "A"의 점수를 1 증가시킨다
ZRANGE myzset 0 -1 # myzset의 모든 요소를 점수 순으로 가져온다
ZREM myzset "A" # myzset에서 "A"를 제거한다




6. Bitmap
- 비트 맵을 사용하여 데이터를 비트 단위로 저장한다.
SETBIT mybitmap 1 1 # mybitmap의 1번 비트를 1로 설정한다
GETBIT mybitmap 1 # mybitmap의 1번 비트 값을 가져온다
BITCOUNT mybitmap # mybitmap에서 1로 설정된 비트의 개수를 세어 반환한다

7. HyperLogLog
- 대용량 데이터의 중복되지 않는 요소 개수를 추정할 수 있다.
PFADD myhll "A" "B" "C" # myhll에 "A", "B", "C"를 추가한다
PFCOUNT myhll # myhll의 고유 요소 개수를 추정하여 반환한다

8. Geospatial
- 지리적 데이터를 저장하고 처리할 수 있다.
GEOADD mygeo 13.361389 38.115556 "Palermo" # mygeo에 Palermo의 위치를 추가한다
GEODIST mygeo "Palermo" "Catania" km # Palermo와 Catania 사이의 거리를 km 단위로 반환한다
GEOSEARCH mygeo FROMMEMBER "Palermo" BYRADIUS 100 km # Palermo를 기준으로 반경 100km 내의 위치를 검색한다

9. Stream
- 메시지 브로커와 유사하게 작동하며 실시간 데이터를 처리할 수 있다.
XADD mystream * name "Alice" age 30 # mystream에 메시지를 추가한다
XREAD COUNT 2 STREAMS mystream 0 # mystream에서 메시지 2개를 읽는다

Redis의 Key 관리 명령어
1. 키의 생성과 삭제
- 키가 존재하지 않을 때 아이템을 넣으면 빈 자료 구조를 생성한다.
DEL mylist # mylist를 삭제한다
LPUSH mylist 1 2 3 # mylist에 1, 2, 3을 추가한다 (키가 자동으로 생성됨)
2. 키의 조회
- EXISTS 명령어로 키가 존재하는지 확인한다.
- KEYS 명령어로 패턴에 맞는 모든 키를 조회한다.
- SCAN 명령어로 대량의 키를 점진적으로 조회할 수 있다.
EXISTS mylist # mylist가 존재하는지 확인한다
KEYS * # 모든 키를 조회한다
SCAN 0 # 모든 키를 점진적으로 조회한다

3. SORT 명령어
- 리스트, 세트, 정렬된 세트를 정렬하여 조회할 수 있다.
SORT mylist # mylist를 정렬한다
4. RENAME 명령어
- 키의 이름을 변경한다.
RENAME oldkey newkey # oldkey의 이름을 newkey로 변경한다
5. COPY 명령어
- 키를 복사한다.
COPY source destination # source 키를 destination 키로 복사한다
6. OBJECT 명령어
- 키에 대한 상세 정보를 반환한다.
OBJECT ENCODING mykey # mykey의 인코딩 정보를 반환한다
7. FLUSHALL 명령어
- 모든 키를 삭제한다.
FLUSHALL # 모든 키를 삭제한다
8. UNLINK 명령어
- 비동기적으로 키를 삭제한다.
UNLINK mykey # mykey를 비동기적으로 삭제한다
9. EXPIRE 명령어
- 키의 만료 시간을 설정한다.
EXPIRE mykey 60 # mykey의 만료 시간을 60초로 설정한다
10. TTL 명령어
- 키의 남은 유효 기간을 조회한다.
TTL mykey # mykey의 남은 유효 기간을 조회한다
참고 자료
개발자를 위한 레디스 | 김가림 - 교보문고
개발자를 위한 레디스 | 개발자가 인메모리 데이터베이스인 레디스를 잘 활용할 수 있도록 초점을 맞춘 포괄적인 안내서다. 레디스를 처음 배우는 독자나 NoSQL 데이터베이스의 개념을 쌓고자 하
product.kyobobook.co.kr
GitHub - redis/redis-doc: Redis documentation source code for markdown and metadata files, conversion scripts, and so forth
Redis documentation source code for markdown and metadata files, conversion scripts, and so forth - redis/redis-doc
github.com
'기술 탐구 > redis' 카테고리의 다른 글
Redis는 I/O 이벤트 통지 메커니즘, epoll에 대해 알아보자 (0) | 2025.04.03 |
---|---|
(Redis) 레디스를 캐시로 사용하기 (0) | 2024.06.27 |
(Redis) 레디스 자료 구조 활용법 (사례) (0) | 2024.06.25 |