Redis와 Memcached 무엇을 세션 스토리지로?

00_8_3·2022년 5월 4일
0

SEEME 이슈

목록 보기
8/10

session은 어디에 저장하는 것이 적합할까?

  • 세션은 비연결성과 상태없음같은 특성을 보완하기 위해 사용한다.
  • 세션에 주로 로그인한 유저의 정보를 저장하는데, 이 정보는 영원히 저장되는 것이 아니다.
  • 유저의 로그아웃이나 개발자의 세션 만료 설정에 따라 세션이 제거가 된다.

위와 같은 이유 때문에 데이터 유실로 인한 피해가 다른 데이터에 비해 적다.
예를 들어 세션 스토리지의 데이터가 유실되었다 하더라도 유저는 재 로그인만 하면 된다.

따라서 세션 스토리지는 In-memory가 적합하다.

In-memory 중 어떤 DB로 사용할까?

In-memory 환경의 세션 db를 사용한다면 RedisMemcached가 자주 언급 되는데
두 가지 모두 key-value 형태로 데이터를 저장하는 방식을 사용하고 있기 때문이다.

key-value의 형태로 인해 RDBMS 같은 복잡한 연산은 지원하지 않지만 단순 작업에 있어서는 빠른처리가 가능.

두 저장소의 차이점

첫 번째

RedisReplication 지원을 하기 때문에 Memcached보다 쉽게 데이터를 복구가 가능하다.

반면에 MemcachedConsistent Hashing이란, 데이터를 노드의 수에 따라 균등하게 분배하고 저장한다. 즉 장애 발생시 하나의 서버만 데이터가 유실되며 나머지 서버는 데이터를 그대로 유지한채 운영이 가능하다.

두 번째

응답 속도에서의 차이
Redis는 jemalloc이라는 알고리즘으로 malloc과 free를 통해 메모리 할당을 한다.
반면에 Memcached는 slab 할당자를 이용해 내부적으로는 메모리를 재할당을 하지 않고 관리하는 형태를 취한다.

이 차이로인해 Redis는 메모리 파편화가 발생하고 이러한 할당 비용으로 인해 응답 속도가 상대적으로 느려진다. (하지만 매우 드문 현상)

세 번째

Redis의 다양한 자료구조 지원

  • String, Set, Sorted Set, List, Hash

마지막

Redis는 싱글 스레드, Memcached는 멀티스레드

참고

https://aws.amazon.com/ko/elasticache/redis-vs-memcached/

0개의 댓글