[Redis] Redis란 무엇일까...

kkkey·2022년 11월 5일
0

Redis

목록 보기
1/1
post-thumbnail

목차
1. cache의 개념
2. cache의 동작구조
3. redis란?
4. redis의 효험
5. redis 는 왜 빠를까?

1). cache란?

나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스해 주는 것

캐시의 배경에는 "파레토의 법칙" 이 있다. 파레토의 법칙이란 80%의 결과는 20%의 원인으로 생기다는 것이다. 그렇다면 20퍼센트의 결과를 빠르게 알아낼 수 있다면 80%의 요청이 빠르게 처리된다는것이 아닐까?!?!

cache 의 목표는
1.캐시 적중률의 최대화 & 부적중률(不的中律)의 최소화
2.캐시 레이턴시의 최소화
3.캐시 대역폭의 최대화
4.캐시 정책 및 알고리즘의 최적화
5.캐시 부적중에 따른 패널티의 최소화
6.데이터 일관성 보장
7.데이터 일관성에 따른 오버헤드 최소화
정도가 되겠다. 간단하게 성능 향상을 위해 만들어진 전용 메모리이다.

2).cache의 동작구조

캐시의 동작구조는 4가지 정도로 추릴 수 있다.

3). 레디스란?

Redis는 빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어입니다. Redis는 다양한 인 메모리 데이터 구조 집합을 제공하므로 다양한 사용자 정의 애플리케이션을 손쉽게 생성할 수 있습니다. 주요 Redis 사용 사례로는 캐싱, 세션 관리, pub/sub 및 순위표를 들 수 있습니다. Redis는 현재 가장 인기 있는 키 값 스토어로서, BSD 라이선스가 있고, 최적화된 C 코드로 작성되었으며, 다양한 개발 언어를 지원합니다. Redis는 REmote DIctionary Server의 약어입니다.
Redis는 속도가 빠르고 사용이 간편하여 최고의 성능이 필요한 웹, 모바일, 게임, 광고 기술 및 IoT 애플리케이션에서 널리 사용되고 있습니다.

4,5). 레디스의 효험, 왜 빠른지에 대해..

in-memory: disk가 아닌 memory에 저장하기 때문에 disk I/O 작업이 발생하지 않아 속도가 빠르며, 휘발성입니다.

No-SQL: Not Only SQL를 뜻하며 RDBMS에 비해 속도가 빠른 장점이 있습니다.

  1. 1ms 이하의 지연 시간

데이터를 메모리에 저장하기 때문에 디스크 기반 데이터베이스보다 더 빠르게 데이터를 읽을 수 있습니다.

  1. 개발자의 사용 용이성

문법적으로 사용하기 쉽고, 작성할 개발코드 양이 적습니다.

  1. 데이터 파티셔닝

여러 노드에 데이터를 분산하여 저장할 수 있습니다.
이를 통해 수요가 증가할 때 더 많은 데이터를 효과적으로 처리하기 위해 스케일아웃이 가능합니다.

  1. 광범위한 프로그래밍 언어 지원

여러 개발언어를 지원합니다.
지원되는 언어에는 Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, Go 등이 있습니다.

  1. 다양한 데이터 구조

Redis는 String 외에도 Set, Sorted Set, Hash, List 등 다양한 타입을 지원합니다.
애플리케이션에서 위에 적힌 다양한 데이터 타입을 활용할 수 있습니다.
예를 들어 Redis Sorted Set을 활용하여 순위 별로 정렬된 플레이어 목록을 유지하는 게임 리더보드를 쉽게 구현할 수 있습니다.

  1. 스냅샷

Redis를 사용하면 특정 시점에 데이터를 디스크에 저장하여 보관할 수 있고, 장애 상황 시에 복구에 사용할 수 있습니다.

  1. 복제

Redis를 사용하면 Master - Slave 구조로 여러 개의 복제본을 만들 수 있습니다.
이를 통해 데이터베이스 읽기를 확장하고 높은 가용성(오랜 시간 고장 나지 않는) 클러스트를 가질 수 있습니다.

  1. 트랜잭션

Redis는 명령 그룹을 격리된 원자적 작업으로 실행할 수 있는 트랜잭션을 지원합니다.

  1. Pub / Sub Messaging

Pub(발행) / Sub(구독) 방식의 메시징을 지원합니다.
따라서 고성능 채팅방, 실시간 댓글 스트림, 소셜 미디어 피드 및 서버 상호 통신에 사용할 수 있습니다.

  1. 루아 스크립트 지원

매우 경량화된 절차 스크립트 언어인 루아를 지원합니다.
스크립트를 통해 성능을 높이고 응용 프로그램을 단순화하는 데 도움이 될 수 있습니다.

  1. 위치기반 데이터 타입 지원

Redis에는 대규모 실시간 위치기반 데이터 작업을 지원합니다.
따라서, 두 위치의 거리를 찾거나, 사이에 있는 요소 찾기 등의 작업을 수행할 수 있습니다.
이를 활용하여 맛집, 길 찾기, 지도기반의 고성능 서비스를 제공할 수 있습니다.

profile
주니어 백엔드 개발자입니당

0개의 댓글