[테크 톡 - 20주차] Radis란?

728x90

📌 Radis란?

- Remote Dictionary Server  : 외부 key-value 서버

- Key-value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터 베이스 관리 시스템

관계형 DB (SQL DB) 비관계형 DB (NoSQL)
- 데이터를 테이블 형식으로 저장

- 데이터에 엑세스하고 관리하기 위해 다양한 데이터 모델을 사용함
- 각 테이블 마다 행당 테이블을 고유하게 식별하는 프라이머리키를 항당하고 이를 다른 테이블의 외래키로서 테이블 간에 연결을 할 수 있음.
- SQL 쿼리를 작성하여 상호작용
- 스키마가 없는 데이터를 관리하기 때문에 관리 시스템에 여러 종류가 있음 (키 값 DB, 도큐먼트 DB, 그래프 DB 등)
- 데이터의 변형 및 테이블 관계에 대한 엄격한 규칙을 따름
- 데이터 무결성과 일관성을 유지하면서 정형 데이터에 대한 복잡한 쿼리 처리 가능
- 관계형 DB 보다 유연하며 요구 사항이 변화하는 데이터에 보다 유리함.
- 이미지, 비디오, 문서 등을 저장하는 데 사용 할 수 있음.
- 가용성을 보장하지만 즉각적인 일관성을 보장하지 않음
  ( DB의 상태는 시간이 지남에 따라 변할 수 있으며, 결국 일관된 상태가 된다. )
- 성능이 디스크 하위 시스템에 따라 달라진다.
  디스크를 최적화하면 DB 성능을 높일 수 있으며,
  성능을 극대화하려면 인덱스, 테이블 구조 및 쿼리도 최적화 해야함.
- 네트워크 지연 시간, 하드웨어 클러스터 크기 및 호출 APP에 따라 달라진다.
- 성능을 높이려면 클러스터 크기를 증대시키거나 네트워크 지연시간 최소화, 인덱스 및 캐시 등으로 성능을 높일 수 있다.
- 대규모 환경에서 문제를 일으킬 수 있음.
- 수직적 규모 조정 : CPU 혹은 RAM리소스 추가
- 수평적 규모 조정 : 읽기 전용 워크로드를 처리하기 위해 서버 간 데이터를 복제하여 수평적으로 규모를 조정 
- 워크노드를 여러 노드에 손쉽게 분산 가능
- 작게 분할하고 여러 노드에 세트를 분산하여 대량의 데이터 처리 가능

- 데이터의 크기, 구조, 엑섹스 빈도를 예측 할 수 있는 경우 적합
- 엔터티 간의 관계가 중요한 경우 적합 
- 형태나 크기가 유연하거나 향후 변경 될 수 있는 데이터를 저장하는 데 효과적임 

 

📌 캐시 서버란?

-  자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 저장소
   한번 데이터를 읽어올 때 임시 저장소에 저장하여 다음 번에 읽을 때 결과값을 빠르게 받아 올 수 있음.
   같은 요청이 여러 번 들어오더라도, DB를 거치지않고 캐시 서버에서 결과 값을 주기 때문에 DB 부하를 줄이고 서비스 속도를 높일 수 있다.

◾ Cache 사용 구조

- Look Aside Cache (Lazy Loading)

캐시에 접근해 데이터가 존재하는지 판단하고 캐시에 존재하지 않으면 DB를 호출

대부분 이 프로세스를 사용함.

- Write Back

모든 데이터를 캐시에 먼저 저장했다가 일정 주기마다 DB에 전송하여 저장

DB에 저장한 데이터는 캐시에서 삭제 됨.

특정 시점에만 DB에 접근하기 때문에 속도 저하를 방지 할 수 있으나, 데이터가 날아갈 위험이 있음.

 

📌 Radis의 특징

- Collection 지원으로 다양한 데이터 형식 사용 가능 (List, Set, Sorted set, Hash 등)

- 싱글 스레드 사용으로

원자성

을 보장하고 경쟁상태에 빠지는 것을 방지 (경쟁상태는 가끔 나타난다고 함)
  원자성 : 안전성 보장을 위해 가져야 할 성질 중 하나,
                한 트랜잭션의 연산들이 모두 성공하거나, 반대로 전부 실패되는 성질
  경쟁상태 : 공유 자원에 대해 여러 프로세스가 동시에 접근을 시도할 때 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태

- 영속성을 지원하는 인메모리 데이터 저장으로, 서버가 꺼지더라도 데이터를 다시 불러들일 수 있다.
  영속성 : 프로그램이 종료되어도 데이터가 사라지지 않는 특성.

 

📌 Radis의 단점

- key-value 형태로 저장된 데이터를 radis 자체 내에서 처리 하는 것이 어렵다.

 

📌 Radis의 트랜잭션

- 명령들을 Queue에 모아두고 한번에 처리하지만 RDB와는 다르게 롤백(rollback)을 지원하지 않는다.
  중간에 실패하더라도 실패한 명령을 제외하고 나머지 명령은 모두 실행된다. 

   

📌 Radis의 데이터 처리

- Java에서 Hash와 비슷하다.

- key-value 데이터 구조로 간단하게 데이터를 처리 할 수 있다.

set 데이터 저장
get 데이터 조회
rename 데이터 변경
randomkey 저장된 key 中 랜덤하게 1개의 키를 검색
keys 모든 key 검색
exists 검색 대상 key 존재 여부를 확인
mset 여러개의 데이터 저장
mget 여러개의 데이터 검색 

 

📌 Radis의 사용

- 인증 토큰 저장, 랭킹보드 사용

 

 

 

 

 

💌 Reference

https://velog.io/@hope1213/Redis%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

 

Redis란 무엇일까..?

최근 여러 프로젝트를 찾아보며 구경하다보니 redis의 존재에 대해 알게됐습니다. 검색을 해보니 캐시와 비슷한 것??? 이라고하는데 솔직히 잘 모르겠어서 이 redis를 캐시대신 사용하는 이유가 무

velog.io

https://wildeveloperetrain.tistory.com/21#google_vignette

 

Redis란? 레디스의 기본적인 개념 (인메모리 데이터 구조 저장소)

Redis란? Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)입니다. 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리

wildeveloperetrain.tistory.com

https://aws.amazon.com/ko/compare/the-difference-between-relational-and-non-relational-databases/

 

관계형 데이터베이스와 비관계형 데이터베이스 - 데이터베이스 유형 간의 차이점 - AWS

데이터의 크기, 구조 및 액세스 빈도를 예측할 수 있는 경우 관계형 데이터베이스가 가장 적합합니다. 엔터티 간의 관계가 중요한 경우에도 관계형 데이터베이스 관리 시스템을 선호할 수도 있

aws.amazon.com

https://steady-coding.tistory.com/586

 

[데이터베이스] Redis란?

cs-study에서 스터디를 진행하고 있습니다. Cache Cache의 개념 Cache란 나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스해 주는 것을 의미한다. 즉, 미리 결과를 저장하고 나중에 요청이 오면 그

steady-coding.tistory.com

https://seokhyun2.tistory.com/63

 

[Redis] Redis란? & Redis 사용방법

0. 개요 서비스를 개발하다보면, 서비스 속도가 종종 문제를 일으킵니다. 그래서 속도를 높이기 위해 다양한 방법을 활용하는데, 그 중에 오늘은 Redis를 활용하는 방법을 알아보고자 합니다. 일

seokhyun2.tistory.com

https://liebe97.tistory.com/37

 

Redis란?

Redis 란? - Redis(REmote Dictionary Server) 는 비 관계형 데이터베이스이다. - 메모리 기반의 '키-값' 구조의 데이터 관리 시스템 - 모든 데이터들을 메모리에 저장하고 조회하기에 빠르다. - 레디스에서

liebe97.tistory.com

 

728x90