해당 코드는 Github 공개되어 있습니다.
Redis에 대한 내용을 최대한 간략하게 설명한 포스팅입니다.
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로 접속하면 전체키를 확인할 수 있습니다.