2017-11-06 11 views
1

私たちはElasticache(Redis)を使用して、クラウドプラットフォーム用のキャッシングレイヤーを実装しています。それはmongodbバックエンドを持っています。 Node.jsとJavaを使用して、異なるプラットフォームのコンポーネントでこれらのデータにアクセスします。Elasticache(Redis)でデータを分割する適切な方法

Node.jsのサンプルコードは、我々は、データの異なるカテゴリをキャッシュRedisのキャッシュに

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と言ってください。現在、それらを単一の赤いノードに格納しています。また、データを分割するために名前空間接頭辞を使用します。

例、

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

しかし、私はこの記事を越えカムと、それは名前空間を避けるために、その優れたと言います。 http://www.mikeperham.com/2015/09/24/storing-data-with-redis/

だから、私たちのユースケースに最適な解決策は何ですか?

異なるデータ・パーティションごとに異なるRedisのノードを有する

型データは Y型データはノード Z型のデータは、C Redisのノード

にキャッシュされたBのRedisにキャッシュされるRedisのノードにキャッシュされ

X

単一の赤いノードで複数の赤いdbsを使用していますか?

X型データは Y型データは Z型データはRedisのノード

答えて

0

ための第2のDBにキャッシュされるRedisのノードの1 DBにキャッシュされるRedisのノードの0番目のDBにキャッシュします一般に、各データセットをそれ自身のクラスタに格納する方が良いです。

  • 複数のクラスタを有する主要欠点は、管理オーバーヘッドが、elasticacheと、それのほとんどは、この欠点を最小限に抑え、管理されています。

  • あなたのelasticacheクラスタのスケーリングは管理されていますが、それでもデータを移動する必要があります.1つのクラスタに複数のデータがあるほど、スケーリングに時間がかかり、パフォーマンスが向上しますオンラインリスケーリング。

  • のように、データを複数のクラスタに分割することで、各クラスタでより小さいインスタンスを使用できます。結局、それはほぼ同じ費用がかかるかもしれません。

もちろん、常に例外があります。その固有のコンテキスト内でこれらの問題を検討する必要があります。

関連する問題