web-dev-qa-db-ja.com

サーバーに複数のredisインスタンスをインストールするのは良い考えですか?

タイトルが言うように。 redisを使用してステートサービスファームを作成することを検討しています。複数の「リージョン」を処理したいと考えています。そうすれば、サービスがダウンした場合に影響を受けるのは1つのリージョンのみです。これは最初は良い考えのように思えるかもしれませんが、次の場合は事前に知っておきたいと思います。

  1. Redisのインスタンスを複数並べてインストールするのは良い考えですか?
  2. RedisはデータをRAMにのみ保存しますか?
  3. RAM典型的なredisインスタンスはどのくらい使用しますか?(これは反語の質問かもしれませんが、推測が好きです)
4
Maciek

Stack Exchangeでは、単一のサーバーでRedisの複数のインスタンスを実行していますが、問題は発生していません。

[kbrandt@ny-redis01: ~] ps -e -o vsz,cmd | grep redis-server | sort -nr
15943668 /usr/sbin/redis-server *:6382
14966708 /usr/sbin/redis-server *:6379
7878376 /usr/sbin/redis-server *:6380
2692092 /usr/sbin/redis-server *:6384
1855480 /usr/sbin/redis-server *:6383
1002304 /usr/sbin/redis-server *:6381
377072 /usr/sbin/redis-server *:6385
374780 /usr/sbin/redis-server *:6387
 50992 /usr/sbin/redis-server *:6388
 50992 /usr/sbin/redis-server *:6378

メモリ使用量は、実際には各インスタンスに入れるデータの量に依存します。断片化のオーバーヘッドが発生する可能性もあります(redis infoコマンドで断片化率を確認できます)。容量を見積もるには、よくある質問から "Redisメモリフットプリントは何ですか?" を参照してください。また、同じFAQに記載されているように、必ず/proc/sys/vm/overcommit_memoryを1に設定してください。

9
Kyle Brandt
  1. @fakerが言ったように、それはユースケースに依存します。ローカルに(アプリサーバーに)キャッシュすることだけを考えている場合は、機能する可能性があります。ただし、共有キャッシュ/データストア機能が必要な場合は、分離されたソリューションを使用します。さらに、カップリングはスケーラビリティを阻害する可能性があるため、通常は嫌われます。

  2. はい-Redisのデータは完全にRAMから保存され、提供されます。ただし、データを永続ストレージに永続化するオプションがあります。

  3. Redisのプロセスは非常に軽量です。つまり、ロード時に2MB未満です。上記で消費されたRAMはデータストレージ用であり、データ量、データコンテンツ、キースペースの「スキーマ」、使用するデータ構造などの複数の要因によって異なります。

0
Itamar Haber