2017-11-06 2 views
1

우리는 Elasticache (Redis)를 사용하여 클라우드 플랫폼 용 캐싱 레이어를 구현합니다. 그것은 mongodb 백엔드를 가지고있다. Node.js와 Java를 사용하여 서로 다른 플랫폼 구성 요소에서 이러한 데이터에 액세스합니다.Elasticache (Redis)에서 데이터를 파티셔닝하는 올바른 방법

Node.js를 예 코드는 우리가 다른 종류의 데이터를 캐시 레디 스 캐시

var redisClient = require('redis').createClient(config.aws.redis.port, config.aws.redis.endpoint, {no_ready_check: true}); 
var redisKey="urls_"+url; 
redisClient.get(redisKey, function (redisErr, reply) {}); 

아래 설명한다. X, Y, Z라고 말하십시오. 현재 우리는 그들을 단일 redis 노드에 저장합니다. 그리고 우리는 네임 스페이스 접두사를 사용하여 데이터를 분할합니다.

예,

key ="X_"+url 
key ="Y_"+money 
key ="Z_"+length 

는하지만이 문서를 통해 캠과 이름 공간을 피하기 위해 더 나은 말한다. http://www.mikeperham.com/2015/09/24/storing-data-with-redis/

그래서 우리의 유스 케이스에 가장 적합한 솔루션은 무엇입니까?

다른 데이터 파티션마다 다른 레디 스 노드를 갖는

형 데이터 Y 형 데이터 노드 Z 형 데이터 C의 레디 스 노드

에 캐시 될 B의 레디 스에 캐시 될 레디 스 노드에 캐쉬한다

X

단일 redis 노드에서 여러 redis dbs를 사용 하시겠습니까?

X 타입의 데이터가 Y 형 데이터가 레디 스 노드 Z 형 데이터의 1 DB에 캐시됩니다 레디 스 노드의 0 번째 DB에 캐시됩니다를위한 레디 스 노드

답변

0

의 2 DB에 캐시됩니다 일반적으로 각 데이터 집합을 자체 클러스터에 저장하는 것이 좋습니다.

  • 다중 클러스터를 갖는 주요 단점은 관리 오버 헤드이지만 elasticache와, 그 대부분이 단점을 최소화 관리된다.

  • 탄성 캐시 클러스터의 확장 성을 관리하면서도 데이터를 이동할 필요가 있습니다. 단일 클러스터에서 더 많은 데이터를 보유할수록 확장하는 데 더 오래 걸리고 더 많은 성능상의 영향을줍니다 온라인 재배치.

  • 데이터를 여러 클러스터로 분할하면 각 클러스터에서 더 작은 인스턴스를 사용할 수 있습니다. 결국, 비용은 거의 같을 수 있습니다.

물론 예외는 항상 있으며 고유 한 상황에서 이러한 문제를 고려해야합니다.

관련 문제