Redis Getting Started
Redis는 빠른 성능과 다양한 데이터 구조를 제공하는 인메모리 데이터 저장소로, 실시간 데이터 처리와 캐싱 등 다양한 분야에서 활용되고 있습니다. 본 포스팅에서는 Docker를 이용한 Redis 설치 방법부터 시작하여, Redis의 주요 용어와 CURD 명령어, 그리고 문자열, List, Hash, Set, Sorted Set 등 기본 데이터 타입의 사용법을 실제 예제와 함께 설명합니다. 또한, Spring Data Redis를 통해 Redis와의 연동 방법을 알아봄으로써, 개발자가 Redis를 보다 쉽게 시작하고 활용할 수 있도록 돕고자 합니다.
해당 코드는 Github 공개되어 있습니다.
Redis 설치 (Docker)#
1 | version: '3.7' |
1 | $ docker-compose up -d |
Client 접속#
Medis를 이용해서 Redis Client 접속을 진행
Redis 용어 설명#
용어 | 설명 |
---|---|
Table | 하나의 DB에서 데이터를 저장하는 논리적인 구조 |
Data Sets | 테이블을 구성하는 논리적단위, 하나의 Data-Set은 하나의 Key와 한 개 이상의 FIELD/ELEMENT로 구성 |
Key | 하나의 Key는 하나 이상의 조합된 갓으로 펴현 가능 ex 주문번호, 주문번호+순번, 년월일+순번 |
Values | 해당 Key에 대한 구체적인 데이터를 값으로 표현합니다. |
데이터 CURD#
종류 | 내용 |
---|---|
set | 데이터를 저장(Key, Value) |
get | 저장된 데이터를 조회 |
rename | 저장된 데이터 값을 변경할 때 |
Keys | 지정된 모든 Key를 조회 |
exits | 검색 대상 Key가 존재하는지 여부를 확인 |
mset/mget | 여러 개의 Key와 Value를 한번 저장하고 검색할 때 사용 |
실습#
1 | redis:6379> set 1111 "Yun" # 해당 키값으로 벨류 저장 |
데이터 타입#
데이터 타입 | 내용 |
---|---|
strings | 문자, Binary 유형 데이터를 저장 |
List | 하나의 Key에 여러 개의 배열 값을 저장 |
Hash | 하나의 Key에 여러 개의 Fields와 Value로 구성된 테이블을 저장 |
Bitmaps | 0,1로 표현하는 데이터 타입 |
HyperLogLogs | Element 중에 Unique 한 개수의 Element 만 계산 |
Geospatial | 좌표 데이터를 저장 및 관리하는 데이터 타입 |
본 포스팅에서는 strings
, List
, Hash
만 살펴볼 예정입니다.
Hash#
하나의 Key와 하나 이상의 Field/Element
값으로 저장할 수 있으며, Value에는 기본적으로 strings 데이터를 저장할 수 있습니다. 타입의 데이터들은 지정할 수 있으며 해당 컨테이너 타입에는 Hash, List,
Set/Sorted SEt 4가지 유형이 있습니다.
- Hash 타입은 기존 관계형 DB에서 Primary-Key와 하나 이상의 칼럼으로 구성된 테이블 구조와 매우 흡사한 데이터 유형
- 하나의 Key는 오브젝트명과 하나 이상의 필드 값을 콜론
:
기호로 결합하여 표현할 수 있습니다. ex ex order:201809123, order_detail:201809123:01 - 문자 값을 저장할 때는 인용부호
""
를 사용하며 숫자 값을 저장할 때는 인용부호가 필요하지 않습니다. - 기본적으로 필드 개수는 제한 없습니다.
- Hash 타입의 데이터를 처리할 때는
hmset
,hget
,hgetall
,hkey
,hlen
명령어를 사용합니다.
1 | hmset order:201809123 customer_name "Woman & Sports" emp_name "Magee" total 601100 payment_type "Credit" order_filled "Y" ship_date 20180925 |
List 타입#
- List 타입은 기존의 관계형 테이블에는 존재하지 않은 데이터 유형이며 일반적인 프로그래밍 언어에서 데이터를 처리할 때 사용되는 array 변수와 유사한 데이터 구조입니다.
- 기본적으로 Strings 타입의 경우 배열에 저장할 때는 데이터 크기는 512MB입니다.
- List 타입의 데이터를 처리할 때는 lpush, lrange, rpush, rpop. llen, index 명령어를 사용합니다.
1 | # Deta Format을 JOSN으로 저장 |
Set 타입#
- List 타입은 하나의 필드에 여러 개의 배열 값을 저장할 수 있는 데이터 구조라면 Set 타입은 배열 구조가 아닌 여러 개의 엘리먼트로 데이터 값을 표현하는 구조입니다.
- Set 타입의 데이터를 처리할 때는
sadd
,smemebers
,scard
,sdiif
,sunion
명령어를 사용할 합니다.
1 | SADD product "id:11, product_name:Sky Pole, item_prifce:55, qty:100, price: 5500" "id:12, product_name:Bunny Boots, item_prifce:135, qty:500, price: 67000" |
Sorted Set 타입#
- Sorted Set 타입은 Set 타입과 동일한 데이터 구조이며 차이점은 저장된 데이터 값이 Sorting된 상태이면 Sroted Set이라고 합니다.
- 데이터를 처리할 때는
zadd
,zragne,
zcard
,zcount
,zrank
zerverank
명령어를 사용합니다.
1 |
|
Spring Data Redis#
Dependency 설정#
1 | dependencies { |
yml 설정#
1 | spring: |
Data Redis Repositroy#
1 |
|
@RedisHash
Redis Hash에 저장하는 aggregate 루트로 저장value
: Redis Key에 대한 Prefix,member:6
@timeToLive
: TTL 시간을 지정해서 저장합니다.
1 |
|
1 | # member:1 전페 필드 조회 |
Medis Client 접속#
Medis Client로 접속하면 전체키를 확인할 수 있습니다.