개발일지

Redis 본문

Backend

Redis

wa_n 2022. 12. 23. 14:41
728x90
반응형

Redis는 Memcached와 비슷한 캐시 시스템으로서 동일한 기능을 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원하고 있습니다. 

 

여기서 캐시 시스템이란게 어떤 건지 잘 몰라서 찾아봤다 

Cache란 나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스해 주는 것을 의미한다. 즉, 미리 결과를 저장하고 나중에 요청이 오면 그 요청에 대해서 DB 또는 API를 참조하지 않고 Cache를 접근하여 요청을 처리하는 기법이다. 이러한 cache가 나온 배경에는 파레토 법칙이 있다.

파레토 법칙이란 80%의 결과는 20%의 원인으로 인해 발생한다는 뜻이다.

즉, 캐시는 모든 결과를 캐싱할 필요가 없으며 서비스를 할 때 많이 사용되는 20%만 캐싱함으로써 전체적으로 효율을 끌어올릴 수 있다.

여기서 파레토 법칙이란 처음 들어보는 법칙이 나와서 이건 나중에 좀더 공부해봐야겠다. 

 

Redis

NoSQL로서 Key-Value 타입의 저장소인 

  • 영속성을 지원하는 인메모리 데이터 저장소
  • 읽기 성능 증대를 위한 서버 측 복제를 지원
  • 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding) 지원
  • 다양한 서비스에서 사용되며 검증된 기술
  • 문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 데이터형을 지원. 메모리 저장소임에도 불구하고 많은 데이터형을 지원하므로 다양한 기능을 구현

레디스는 고성능 키-값 저장소로서 Stirng , list, hash, set, sorted set형식의 데이터를 지원하는 NoSQL입니다.

이렇게 다양한 자료구조를 지원하는 redis는 개발의 펴의성이 좋아지고 난이도가 낮아지는 장점이 있다 

 

Redis만 의 특징

1. 더욱 다양한 데이터 구조

문자열 뿐만 아니라 List, Set, 정렬된 Set, Hash, Bit 배열, hyperloglogs (매우 적은 메모리로 집합의 개수를 추정할 수 있는 방법)을 지원합니다. 프로그램에서 위의 다양한 자료구조를 사용할 수 있습니다. 예를 들어, Sorted Set을 활용하여 게임유저의 상위랭크 정보를 쉽게 제공할 수 있습니다.

2. Snapshots

레디스는 특정시점에 데이터를 디스크에 저장하여 파일 보관이 가능합니다. 또한, 장애 상황시 복구에 사용할 수 있습니다.

3. 복제

Master — Salves 구조로, 여러개의 복제본을 만들 수 있습니다. 따라서 데이터베이스 읽기를 확장할 수 있기 때문에 높은 가용성(오랜 시간동안 고장나지 않음) 클러스터를 제공합니다.

3. 트랜젝션

트렌젝션이란 데이터베이스 상태를 변경시키는 작업 단위를 의미하고, 원자성, 일관성, 독립성, 지속성의 특징을 가지고 있습니다. Redis는 이러한 특징을 지원합니다.

4. Pub / Sub messaging

Publish(발행)과 Sub(구독)방식의 메시지를 패턴 검색이 가능합니다. 따라서 높은 성능을 요구하는 채팅, 실시간 스트리밍, SNS 피드 그리고 서버상호통신에 사용할 수 있습니다.

5. 루아 스크립트 지원

매우 경량화된 절차스크립트 언어인 루아를 지원합니다. eval 명령어를 사용하여 루아스크립트를 실행시킬 수 있습니다. 따라서, 프로그램을 명료하게하고 성능을 높일 수 있습니다.

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

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

 

 

 

Redis에서 자주 사용되는 Cache-Aside패턴과 Write-Back패턴

    • 검색 시 Redis에서 먼저 찾아보고 Redis에 저장된 내용이 있다면 저장된 정보를 바로 보여주고 없다면 MySQL에서 정보를 보여준 다음 검색된 내용을 redis에 저장하는 방식
    • Cache-Aside패턴를 사용한다면 같은 내용의 2번째 검색부터는 redis에 저장된 정보를 보여주기 때문에 속도가 빨라집니다.Cache-Aside 패턴(빠른검색용)

 

 

  • Write-Back 패턴(임시저장용)
    • redis에 먼저 임시 저장해놓은 뒤 Database에 저장하는 방식
    • 디스크 기반의 Database에 저장해야할 데이터 양이 많은 경우 디스크I/O(속도가 느린 현상)가 발생하게 되는데 이를 해결하기 위해 Write-Back 패턴을 사용합니다.

  •  

 

출처

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

728x90
반응형

'Backend' 카테고리의 다른 글

DNS / Load Balancer  (0) 2022.12.24
TDD  (0) 2022.12.23
Image upload Process  (0) 2022.12.21
Payment / Iamport  (0) 2022.12.21
async / await  (0) 2022.12.16