1. Redis では、すべてのデータが常にメモリに保存されるわけではありません。これが Memcached と比較した最大の違いです。
2. Redis は単純な k/v 型データをサポートするだけでなく、リスト、セット、ハッシュなどのデータ構造のストレージも提供します。
3. Redis はデータ バックアップ、つまりマスター/スレーブ モードでのデータ バックアップをサポートしています。
4. Redis はデータの永続化をサポートしており、データをディスク上のメモリに保持し、再起動時に再度ロードして使用できます。
Redis は多くの面でデータベースの特徴を持っています。つまり、Memcached は単なる K/V キャッシュであるのに対し、Redis はデータベース システムです
Redis 作成者が Redis と memcache を比較しているところを見てみましょう
出典: 「Redis と比較すると、memcached は恐竜ですか? (Redis と比較すると、Memcached は本当に時代遅れですか?)」
Redis は値が小さいとコアあたりの速度が速くなりますが、memcached はクライアントの助けなしに 1 つの実行可能ファイルと TCP ポートで複数のコアを使用できます。また、memcached は値が大きいほど高速です。 Redis は最近、大きな値 (不安定なブランチ) に関して大幅に改善しましたが、それでもこのユースケースでは memcached の方が高速です。ここで重要なのは、どちらかがボトルネックになる可能性は低いということです。 1 秒あたりのクエリ数を配信できます。
どちらも十分な性能を持っているので、性能をあまり気にする必要はありません。 Redis は単一のコアのみを使用しますが、Memcached は複数のコアを使用できるため、Memcached が小さいデータを保存する場合、平均して各コアの Redis のパフォーマンスが高くなります。 100k を超えるデータの場合、Memcached のパフォーマンスは Redis のパフォーマンスよりも高くなります。Redis は最近ビッグ データの保存パフォーマンスに最適化されていますが、それでも Memcached よりわずかに劣ります。ここまで述べた上で、結論としては、どちらを使用しても、1 秒あたりに処理されるリクエストの数がボトルネックになることはありません。 (たとえば、ボトルネックはネットワークカードである可能性があります)
単純なキーと値のペアの場合、Redis ハッシュを使用する場合は、メモリ効率が高くなります。
メモリ使用効率について言えば、単純なキーと値のストレージを使用する場合、Memcached のメモリ使用率は高くなります。Redis がキーと値のストレージにハッシュ構造を使用する場合、圧縮が組み合わされているため、メモリ使用率は低くなります。レートは Memcached よりも高くなります。もちろん、これはアプリケーションのシナリオとデータの特性によって異なります。
Redis でのみ利用できる 2 つの機能である永続性とレプリケーションに注意する必要があります。たとえ目的がキャッシュを構築することであっても、アップグレードまたは再起動後もデータがまだ存在していることが役立ちます。
データの永続性とデータの同期の要件がある場合は、Memcached にはこれら 2 つの機能がないため、Redis を選択することをお勧めします。システムのアップグレードまたは再起動後にキャッシュされたデータが失われないことを願うだけでも、Redis を選択するのが賢明です。
Redis では、必要な操作の種類に注意する必要があります。キャッシュの使用例を考慮しただけでも、多くの場合、データを処理することなく、1 回の操作でより多くの操作を行うことができます。クライアント側 (大量の I/O が必要になる場合があります)。この操作は通常の GET および SET と同じくらい高速です。そのため、GET/SET だけが必要ではなく、より複雑な操作が必要な場合は、Redis が大いに役立ちます (タイムラインで考えてください)。キャッシュ)。
もちろん、最終的には具体的なアプリケーション要件について話し合う必要があります。 Memcached と比較して、Redis はより多くのデータ構造を持ち、より豊富なデータ操作をサポートします。通常、Memcached では、データをクライアントに取得して同様の変更を行ってから、それを元に戻す必要があります。これにより、ネットワーク IO の数とデータ量が大幅に増加します。 Redis では、これらの複雑な操作は通常、通常の GET/SET と同じくらい効率的です。したがって、より複雑な構造と操作をサポートするキャッシュが必要な場合は、Redis が良い選択となります。