Redis 캐시 및 메모리 직접 사용


141

아직 Redis를 사용하지는 않았지만 그것에 대해 듣고 캐시 저장으로 시도 할 계획입니다.

Redis가 메모리를 캐시 저장소 데이터베이스로 사용한다고 들었으므로 변수를 객체 또는 사전 데이터 유형으로 사용하여 데이터를 저장하는 경우의 차이점은 무엇입니까? 처럼:

var cache = {
    key: {

    },
    key: {

    }
    ...
}

Redis의 장점은 무엇입니까?

답변:


221

Redis는 원격 데이터 구조 서버입니다. 데이터를 로컬 메모리에 저장하는 것보다 확실히 느립니다 (데이터를 가져 오기 / 저장하기 위해 소켓 왕복이 필요하기 때문에). 그러나 몇 가지 흥미로운 속성이 있습니다.

  • Redis는 애플리케이션의 모든 프로세스에서 액세스 할 수 있으며 여러 노드에서 실행될 수 있습니다 (로컬 메모리로는 달성 할 수없는 것).

  • Redis 메모리 스토리지는 매우 효율적이며 별도의 프로세스로 수행됩니다. 응용 프로그램이 메모리가 가비지 수집 된 플랫폼 (node.js, java 등)에서 실행되는 경우 훨씬 더 큰 메모리 캐시 / 저장소를 처리 할 수 ​​있습니다. 실제로, 매우 큰 힙은 가비지 수집 언어에서 제대로 수행되지 않습니다.

  • Redis는 필요한 경우 디스크의 데이터를 유지할 수 있습니다.

  • Redis는 단순한 캐시 그 이상입니다. 다양한 데이터 구조, 다양한 항목 제거 정책, 블로킹 큐, pub / sub, 원 자성, Lua 스크립팅 등을 제공합니다.

  • Redis는 고 가용성을 구현하기 위해 마스터 / 슬레이브 메커니즘으로 활동을 복제 할 수 있습니다.

기본적으로 동일한 데이터를 공유하는 여러 노드에서 애플리케이션을 확장해야하는 경우 Redis (또는 다른 원격 키 / 값 저장소)와 같은 것이 필요합니다.


5
마지막 점은 특히 Rlite 와 같은 것이 무의미한 것처럼 보입니다 . 사전 저장소는 단일 프로세스가있는 대부분의 유스 케이스에 적합합니다. 맞습니까?
naught101

1
예. IMO의 Rlite에 대한 관심은 매우 제한적입니다.
Didier Spezia

이 힌트 덕분에 Redis는 확장하기가 쉽지만 평균 300-500 개의 객체가있는 간단한 chat'app의 경우 메모리에서 검색해야한다고 가정합니다. 메모리 내 데이터 구조는 그 이후로 더 빠르지 않으면 매우 잘 작동합니다. 숫자가 적습니까?
Webwoman

2
@DidierSpezia very large heaps do not perform well with garbage collected languages왜 설명 할 수 있습니까?
roottraveller

1
@roottraveller, 이것은 가비지 수집 프로세스가 일반적으로 힙 메모리를 비우기 위해 응용 프로그램의 실행을 중단해야하고 ( "세계에서 중지") 힙이 클수록이 인터럽트가 더 오래 지속되기 때문이라고 생각합니다.
Regorsmitz

3

현재 우리는 각 요청이 다른 컨테이너로 갈 수있는 서버 아키텍처가 덜 매력적입니다.이 경우 redis는 매우 중요한 역할을 할 수 있습니다.

요청이 단순 캐시가 저장된 동일한 컨테이너에서 제공되는지 확신 할 수 없으므로 서버에서 단순 캐시를 사용할 수 없습니다.

이 경우 원격 위치에 캐시를 저장하기 때문에 redis를 사용해야하며 서버가 적은 아키텍처의 컨테이너 변경에도 액세스 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.