キャッシュではなくデータベースとしてRedisを使用したい。私の(限られた)理解から、Redisはメモリ内のデータストアです。 Redisを使用することのリスクは何ですか?また、どうすればそれらを軽減できますか?
Redisをさまざまな方法で信頼できるストアとして使用できます。
オン[〜#〜] aof [〜#〜](追加のみのファイルストア) AOFドキュメントを参照 。これにより、データセットに対して行われたすべてのRedisコマンドのログがリアルタイムで保持されます。
マスタースレーブレプリケーションを使用してRedisを実行します レプリケーションドキュメントを参照 。これにより、インスタンスの1つに障害が発生した場合に、高可用性を提供できます。
EC2のようなもので実行している場合は、RedisパーティションをEBSでバックアップして、インスタンスの障害に対する別の保護レイヤーを提供できます。
将来的には Redis Cluster -これは特に、HAとスケーラビリティに役立つ方法でRedisを実行する方法として設計されています。ただし、これは少なくともあと6か月ほどは表示されません。
Redisは、データをディスクに書き戻すこともできるメモリ内ストアです。 fsync を実行して、redisをより安全にする(ただし、より遅くする=>トレードオフ)回数を指定できます。
しかし、それでも、redisがまだ実際に(ミッション)クリティカルデータを格納していない状態にあるかどうかはわかりません(まだ?)。たとえば、もう1つのツイート(Twitter.com)または同様の何かが失われたときに大きな問題ではない場合、私は確かにredisを使用します。 persistence については、redisのWebサイトにたくさんの情報があります。
また、anti-rez(redisメンテナ)のブログ記事を読むことで発生する可能性がある いくつかの永続性の問題 にも注意する必要があります。彼はいくつかの興味深い記事を持っているので、あなたは彼のブログを読むべきです。
Redisはメモリ内ストレージであるため、マシンのメモリサイズに合わない大きなデータを保存することはできません。 Redisは通常、保存するデータがRAMサイズの1/3より大きい場合、非常にうまく機能しません。そのため、Redisをデータベースとして使用することの致命的な制限です。
確かに、ビッグデータを複数のRedisインスタンスに分散させることはできますが、すべて自分で手動で行う必要があります。通常、操作は次のように実行されます(最初からインスタンスが1つしかない場合)。
これがRedisのスケーリング方法です!また、移行中の書き込みを防ぐために、サービスを停止する必要があります。
私たちが経験する経験から、Redisにはこの結論があります:Redisは30Gを超えるデータを格納するのに適切な選択ではありません。Redisはスケーラブルではなく、Redisはプロトタイプ開発に非常に適しています。
後で、Redisの代替手段であるSSDB( https://github.com/ideawu/ssdb )を見つけました。これは、RedisのほぼすべてのAPIをサポートするleveldbサーバーであり、より多くのAPIを格納するのに適しています。 1TBを超えるデータは、ハードディスクのサイズにのみ依存します。
Redisをサービスのプライマリデータベースとして使用することで学んだことをいくつか共有したいと思います。パーティション化できないデータがあったため、Redisを選択しました。 1つの箱から得られる最高のパフォーマンスを得たいと思っていました
長所:
短所: