REDIS

majungha·2023년 4월 25일
1

메모

목록 보기
35/57

오늘의 공부 👍

오늘은 Redis에 대해서 알아보겠다.

📝 Redis


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

  • 모든 데이터를 메모리에 저장하고 조회한다. (인메모리 데이터베이스)

  • 다른 인메모리 디비들과의 가장 큰 차이점은 레디스의 다양한 자료구조이다.

  • 다양한 자료구조를 지원하게 되면 개발의 편의성이 좋아지고 난이도가 낮아진다는 장점이 있다.

  • 어떤 데이터를 정렬 할 때, DBMS를 이용한다면 DB에 데이터를 저장하고, 저장된 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 직접 접근을 해야하기 때문에 시간이 더 걸린다는 단점이 있다.

  • 하지만 이 때 In-Memory 데이터베이스인 Redis를 이용하고 레디스에서 제공하는 Sorted-Set이라는 자료구조를 사용하면 더 빠르고 간단하게 데이터를 정렬할 수 있다.

Redis에서 자주 사용되는 Cache-Aside패턴과 Write-Back패턴에 대해 알아보겠다.

▷ Redis만의 특징

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

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

2. Snapshots

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

3. 복제

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

3. 트랜젝션

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

4. Pub / Sub messaging

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

5. 루아 스크립트 지원

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

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

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

▷ Cache-Aside 패턴(빠른검색용)

  • 검색 시 Redis에서 먼저 찾아보고 Redis에 저장된 내용이 있다면 저장된 정보를 바로 보여주고
  • 없다면 MySQL에서 정보를 보여준 다음 검색된 내용을 redis에 저장하는 방식
  • 같은 내용의 2번째 검색부터는 redis에 저장된 정보를 보여주기 때문에 속도가 빨라진다.

▷ Write-Back 패턴(임시저장용)

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

출처 및 참고
코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글