タイトルが言うように。 redisを使用してステートサービスファームを作成することを検討しています。複数の「リージョン」を処理したいと考えています。そうすれば、サービスがダウンした場合に影響を受けるのは1つのリージョンのみです。これは最初は良い考えのように思えるかもしれませんが、次の場合は事前に知っておきたいと思います。
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に設定してください。
@fakerが言ったように、それはユースケースに依存します。ローカルに(アプリサーバーに)キャッシュすることだけを考えている場合は、機能する可能性があります。ただし、共有キャッシュ/データストア機能が必要な場合は、分離されたソリューションを使用します。さらに、カップリングはスケーラビリティを阻害する可能性があるため、通常は嫌われます。
はい-Redisのデータは完全にRAMから保存され、提供されます。ただし、データを永続ストレージに永続化するオプションがあります。
Redisのプロセスは非常に軽量です。つまり、ロード時に2MB未満です。上記で消費されたRAMはデータストレージ用であり、データ量、データコンテンツ、キースペースの「スキーマ」、使用するデータ構造などの複数の要因によって異なります。