Open Source Software

Redis(Remote Dictionary Server)란?

Somaz 2022. 9. 26. 15:25
728x90
반응형

Overview

오늘은 오픈 소스 프로젝트인 Redis에 대하여 공부해보려고 한다.

 

출처 : https://backendless.com/redis-what-it-is-what-it-does-and-why-you-should-care/

 


Redis란?

Redis는 데이터베이스, 캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 오픈 소스(BSD 라이선스), 인메모리 데이터 구조 저장소이다.

문자열, 해시, 목록, 집합, 범위 쿼리가 포함 된 정렬된 집합, 비트맵, 하이퍼로그, 지리 공간 인덱스 및 스트림과 같은 데이터 구조를 제공한다.

 

in-memory 형태의 NO-SQL로써 Key-Value 쌍의 해쉬 맵 형태의 데이터베이스이다.

  • in-memory: disk가 아닌 memory에 저장하기 때문에 disk I/O 작업이 발생하지 않아 속도가 빠르며, 휘발성
  • No-SQL: Not Only SQL를 뜻하며 RDBMS에 비해 속도가 빠른 장점

 

 

Redis에는 다음도 포함된다.

 

 


 

Redis의 이점

 

성능

모든 Redis 데이터는 메모리에 상주하므로 데이터 액세스의 대기 시간을 낮추고 처리량을 높인다. 기존 데이터베이스와 달리 인 메모리 데이터 스토어에는 디스크로의 이동이 필요하지 않기 때문에 엔진 대기 시간이 마이크로초 단위까지 줄어든다.

 

 

유연한 데이터 구조

제한적인 데이터 구조를 제공하는 다른 키 값 데이터 스토어와 달리 Redis에서는 애플리케이션 요구 사항을 충족할 수 있는 다양한 데이터 구조를 지원한다. Redis 데이터 유형은 다음과 같다.

  • 문자열 – 최대 512MB 크기의 텍스트 또는 바이너리 데이터
  • 목록 – 추가된 순서가 유지되는 문자열 모음
  • Sets – 순서가 유지되지 않는 문자열 모음으로 다른 세트 유형과 교차, 통합 및 비교 가능
  • Sorted Sets – 값을 기준으로 순서가 지정된 세트
  • Hashes – 필드 및 값의 목록을 저장하는 데이터 구조
  • Bitmaps – 비트 수준 작업을 제공하는 데이터 유형
  • HyperLogLogs – 데이터 집합 내 고유 항목을 추정하기 위한 확률적 데이터 구조
  • Streams - 로그 데이터 구조 메시지 대기열
  • Geospatial - 경도/위도 기반 항목 맵, ‘인근’
  • JSON - 숫자, 문자열, 부울, 배열 및 기타 개체를 지원하는 명명된 값의 중첩된 반정형 객체

 

 

단순성 및 사용 편의성

Redis를 사용하면 더 짧고 단순한 코드로 기존의 복잡한 코드를 작성할 수 있다. Redis에서는 더 짧은 코드를 작성하여 애플리케이션 데이터의 저장, 액세스 및 사용을 지원할 수 있다.

 

 

복제 및 지속성

Redis는 기본-복제 아키텍처를 사용하며 비동기식 복제를 지원하므로 데이터가 여러 복제 서버에 복제될 수 있다. 따라서 주 서버에 장애가 발생하는 경우 요청이 여러 서버로 분산될 수 있으므로 향상된 읽기 성능과 더 빠른 복구 기능을 제공할 수 있다.

 

 

고가용성 및 확장성

Redis는 단일 노드 기본 또는 클러스터링된 토폴로지에서 기본-복제 아키텍처를 제공한다. 따라서 가용성이 뛰어난 솔루션을 구축하여 일관된 성능과 안정성을 제공할 수 있다.

 

 

오픈 소스

Redis는 AWS를 포함한 역동적인 커뮤니티를 통해 지원되는 오픈 소스 프로젝트이다. Redis는 개방형 표준을 기반으로 하고 오픈 데이터 형식을 지원하며 다양한 클라이언트 세트를 제공하므로 공급업체 종속이나 기술 종속이 없다.

 


 

Redis의 언어지원

  • Python
  • Perl
  • C/C#/C++
  • Java
  • Go
  • JavaScript
  • PHP
  • Ruby
  • Node.js

 

 

  • 캐싱 
    • Redis를 사용하면 빈번하게 요청되는 항목을 1밀리초 미만의 응답 시간으로 지원
    • 고가의 백엔드를 추가하지 않고도 손쉽게 확장하여 더 많은 로드를 처리
    • 주요 예시 : 데이터베이스 쿼리 결과 캐싱, 영구 세션 캐싱, 웹 페이지 캐싱 등

 

  • 채팅, 메시징 및 대기열
    • Redis는 패턴 매칭과 다양한 데이터 구조(목록, 정렬된 세트, 해시 등) 옵션으로 게시/구독을 지원
    • 고성능 채팅방, 실시간 코멘트 스트림, 소셜 미디어 피드 및 서버 상호 통신 가능
    • Redis 목록 데이터 구조를 사용하면 간단한 대기열을 손쉽게 구현

 

  • 게임 순위표
    • 점수로 정렬된 목록을 유지하는 Redis Sorted Set 데이터 구조 사용
    • 실시간 순위 목록 업데이트 가능, 시계열 데이터 처리 가능

 

  • 세션 스토어
    • 사용자 프로필, 자격 증명, 세션 상태, 사용자별, 개인화 등과 같은 세션 데이터를 관리하는 데 용이

 

  • 다양한 미디어 스트리밍
    • 라이브 스트리밍 지원 가능한 빠른 인 메모리 데이터 스토어를 제공
    • CDN이 동시에 수백만 명의 모바일 및 데스크톱 사용자에게 스트리밍 가능하도록 메타데이터, 사용자의 인증 정보/토큰, 메니페스트 파일을 저장하는데 사용

 

  • Machine Learning
  • 실시간 분석

 

 


 

Redis 사용법 및 명령어

 

redis 접속

# 사용법
redlis cli -h <주소> -p <port>

# ex)
redis-cli -h 10.1.28.3 -p 6379
10.1.28.3:6379>
10.1.28.3:6379>

 

 

redis 명령어

# 활성화된 채널 확인
pubsub channels
1) "data"

# 채널을 구독중인 클라이언트 수(subscribe) 확인
pubsub numsub data
1) "data"
2) (integer) 3

# 패턴형으로 등록된 클라이언트 수 확인
pubsub numpat
(integer) 0

 

 

redis pub/sub

 

subscribe

redis-cli -h dev1-fgn-redis.nerdystar.io -p 30479

subscribe data
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "data"
3) (integer) 1

 

publish

publish data "hello"
(integer) 3

 

 

subscribe

subscribe data
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "data"
3) (integer) 1
1) "message"
2) "data"
3) "hello"

 

 


 

Reference

https://redis.io/

https://backendless.com/redis-what-it-is-what-it-does-and-why-you-should-care/

728x90
반응형

'Open Source Software' 카테고리의 다른 글

Cephadm-ansible이란?  (3) 2024.02.29
Rook-Ceph란?  (0) 2024.02.20
Ceph 노드 제거 및 추가 방법(mon/mgr/osd)  (0) 2022.09.21
RabbitMQ란?  (0) 2022.08.01
Ceph 란?  (0) 2022.07.29