컴퓨터(Computer Science)/데이터베이스, DB, DataBase

Redis 와 Memcached

게임이 더 좋아 2022. 12. 1. 23:46
반응형
728x170

 

Redis ( REmote DIctionary Server )

  • 캐시 시스템
  • 영속성, 다양한 데이터 구조 제공
  • 모든 데이터를 메모리에 저장하기 때문에 빠른 성능
  • Read 성능을 개선하기 위한 서버 측 복제 지원
  • Write 성능을 개선하기 위한 클라이언트 측 샤딩(Sharding) 지원
  • Key-value 형태로 데이터를 저장
  • NoSQL의 DB
  • 일반적으로는 싱글스레드 작업으로 수행함(Slow Query 지양)
  • Memcached 보다 기능이 많음
  • 메모리 이상의 데이터는 LRU(Last Recently Used) 알고리즘으로 삭제 → 다르게 가능
  • Master-Slave 구조로 Fail-Over 가능

 

 

주요 기능

  • 다양한 데이터 구조

정렬과 같은 작업을 수행할 때는

기존의 DBMS에서는 On-Disk작업으로 시간이 더 걸림

Redis를 이용한다면 접근 속도도 빠르고 Redis가 제공하는 Sorted-Set이라는 자료구조를 통해 빠르게 데이터 정렬 가능

그 외에도

Redis는 문자열이 추가된 순서대로 유지되는 Lists of Strings, Sets of unordered Strings

필드와 값 목록을 저장하는 Hashes

데이터 세트에서 고유한 항목을 세는 HyperLogLogs를 지원

 

 

  • 영속성

Redis 는 Memory에서 작업을 하게 되지만 영속성을 위해서 Disk 에 데이터를 저장할 수 있음

데이터를 Disk에 저장하는 방식은 2가지가 있음

  1. RDB(Snapshot)
  2. AOF(Append On File)

 

 

 

  • 복제 및 지속성

Redis는 마스터-슬레이브 아키텍처를 사용하며 비동기식 복제를 지원하여 데이터가 여러 슬레이브 서버에 복제 가능

이렇게 하면 주 서버에 장애가 발생하는 경우 요청이 여러 서버로 분산될 수 있으므로 향상된 읽기 성능과 복구 기능을 모두 제공할 수 있음

 

 

 

 


 

주요 사용처

 

캐싱

  • 다른 DBMS보다 "앞"에 위치하기 때문에 In-Memory 캐시를 생성하여 빠르게 캐시를 전송하고 처리량을 늘려줌
  • DB에 대한 캐싱을 지원하기 때문에 많은 사용자가 있을 경우 캐시 서버를 도입

 

세션 관리

  • 세션 키에 대한 적절한 TTL 값을 가지고 빠른 키 값 스토어로 사용할 수 있음(게임에 사용하기 좋음)
  • Session Store 라고도 부름

 

실시간 순위표

  • Redis Sorted Set 데이터 구조를 이용하면 요소들의 정렬이 유지됨
  • 게임 리더보드를 만들기 쉬움

 

속도 제한

  • 이벤트 속도 측정 및 제한 가능
  • Redis에서 Counter를 제공하여 Access  요청의 수를 셀 수 있고 제한할 수 있음

 

대기열

  • 간단한 영구 대기열을 구현할 수 있음
  • Redis List가 자동 작업 및 차단 기능을 제공하기 때문에 메시지 브로커 또는 순환 목록에 필요한 어플리케이션에 적합
  • 리퀘스트 큐와 같이 순서나 처리 순서가 정확하게 정해져야 하는 대기열에 적절

 

채팅 및 메세징

  • 패턴 매칭 지원
  • PUB/SUB 지원 → 이벤트 기반으로 작업 가능
  • 고성능 채팅방 또는 실시간 코멘트 스크림 등 서버 상호 통신 지원

 

 

2015년도 KakaoTalk 아키텍쳐(http://www.oss.kr/oss_case/show/fc9bdee2-66d6-4e45-9d90-94d4d6f39d7d)

 


Memcached

  • key-value 형태로 데이터 저장
  • In-Memory 방식
  • 시스템 메모리 방식, 효율적인 메모리 사용 가능(메모리 풀 공유)
  • 멀티스레드 작동
  • 분산 메모리 캐싱 시스템
  • 단순하고 강력함

 

 

 


 

주요 기능

  • 효율적인 메모리 사용 가능

각 노드(머신) 들은 독립적으로 메모리, CPU 같은 자원이 운용되어 idle 하는 리소스가 있는 경우 효율적이지 못함

Memcached를 사용한다면 Virtual Memory Pool을 공유하므로 전체적인 클러스터의 자원을 필요에 따라 사용 가능

이러한 관점에 따라 Scale-Out 과 비슷한 기능을 하여 성능을 높일 수 있음

 

 

  • 웹 어플리케이션과 연동

  1. WAS는 DB에 접근하기 전 메모리에 캐싱되었는지 확인
  2. DB 부하를 막을 수 있음

 

주요 사용처

  • Redis와 일치

 


참고 링크

 

https://aws.amazon.com/ko/memcached/

http://redisgate.kr/redis/introduction/redis_intro.php

https://aws.amazon.com/ko/elasticache/what-is-redis/

https://devlog-wjdrbs96.tistory.com/374

 

 

728x90
반응형
그리드형

'컴퓨터(Computer Science) > 데이터베이스, DB, DataBase' 카테고리의 다른 글

NoSQL 이란  (0) 2022.12.23
DB 기본 용어  (0) 2022.12.01
Index, 인덱스  (0) 2022.12.01
Key, 키  (0) 2022.12.01
DB 파티셔닝, Partitioning  (0) 2022.11.19