紹介とmemcacheのとRedisのの違い

memcacheのは何ですか?


memcachedのは、分散メモリオブジェクトキャッシュシステムであって、キー/値ペアをハッシュマップに基づいています。各対は、有効期限が設定(0に設定した場合、30日で有効期限が切れる[実際に無期限無期限])とすることができる
が、データのMemcachedはそれほど電源障害やサーバ障害が発生することを、メモリに記憶されていますデータの損失が発生します
Memcachedのは、データストレージアレイ、オブジェクト、文字、文字の他の種類の様々なことができます

memcachedの特徴:
(1)ないバックアップは、お互いの間には、バックアップ・データの各Memcachedのノード、ハング一旦ノードが、データキャッシュが失われることはありません。
(2)基本的なコマンドを置き換え、追加の設定、取得、など、など、特定のキー、欠失、置換、アトミック更新を追加読むことです、追加、株式会社は12月オン/である
(3)Memcachedのアプリケーションモードのは、トランザクションをサポートしていません。しかし、あなたは、いくつかのアトミック操作コマンドを行うことができます。

memcachedのメモリ割り当ての原則:
速度によって特徴付けられるメモリを事前に割り当てられる、しかし、スペースのない合理的な使用は、単純なポイントは、一般的に、速度のためのスペースを使用することで、memcahcedプロセスは、いくつかのスラブに自身を分割しそれぞれを進めますスラブの下に、各ページの下に複数のチャンクがあり、いくつかのページが存在する
数スラブは、この構成プロセスに数十または数十が、メモリに関連した、あまりにも制限され、各スラブの下に実際の物理的なスペースのデフォルトに対応するページは次のページ100は、スラブ100M、ITMEが内部に封入チャンクに格納されたデータを持っていると言うことですつまり、1Mです。チャンクは、デフォルトでは96Byteで、固定サイズのメモリ空間です。
同じサイズのチャンクは、また、スラブとして知られています。

Memcacheのデータ削除メカニズムは:
データの有効期限が切れているとき、memcacheのは、memcacheのは、メモリが割り当てられている再利用していないため、メモリから直接データを削除しませんが、期限切れの場合は、クライアントのデータを取得するとき、タイムスタンプの有効期限が切れているかどうかだけをチェック表示されていないが、メモリの元の割り当ては、慣性障害と呼ばれる、再利用することができます。memcacheのようではないので、CPUリソースを節約、モニタデータを期限切れと。

LRUアルゴリズムのメカニズム:
memcacheのにLRUメカニズム削除データを使用して、最低使用です。各スラブ内のデータがリストに保存され、リストは最も古く、最も最近のデータを指して、頭と尾のポインタを持っています。同時にLRU機構を開始し、両手が障害データクエリでの役割を果たしている場合は最低使用のデータを削除するデータがない場合、それは失敗します。カウンターは、それがまだ切れていないかもしれので、少なくともそれを削除するために使用されるデータを記録したり、恒久的にいくつかの有効なデータを削除します。

のみ各スラブについて、全体ではなくのためにLRU。LRUはメモリがスラブに新しいページを割り当てることができない場合にのみ呼び出されます。
LRUの使用を容易にする効果的な方法は次のとおりです
。1.避けラージオブジェクト
スラブは、ページがメモリを解放することはできません適用され、個々のラージオブジェクトはスラブを引き起こす可能性があるため、システムが唯一、少数の大規模なオブジェクトや個々の単語、メモリ空間の無駄を持っている場合アプリケーションのメモリリソースが十分に活用されていません。
成長因子を調整します。2.
メモリをフルに活用するために、プロジェクトのニーズに応じて成長因子を調整します。

Redisのは何ですか?


Redisのは、オープンソースのキーと値のストレージシステムであり、Memcachedの、Redisのようなデータの大部分がメモリに記憶されます。
サポートされているデータ型が含まれます:文字列、ハッシュ、リスト、セットおよびソートセット:文字列、ハッシュテーブル、リスト、セット、およびこれらのデータ型関連する操作に基づいて設定順序を、最も一般的に使用されるデータは、5つの主要なタイプで構成されています。

Redisの概念はマルチ/ウォッチ/ EXECコマンドを経由してトランザクションをサポートすることができ、原子は、バッチコマンドを実行します。
Redisのは、サーバー側での分散ストレージを構築することを好みます。

Redisのは、データの永続化の方法の異なるレベルを提供しています。


RDB永続的には、指定した時刻に、あなたのデータのスナップショットを保存するために間隔を置いて配置することができます。実際の操作は正常に子プロセス、一時ファイルに書き込まれたデータの最初のセット、書き込みフォークです、その後、前のファイル、バイナリ圧縮ストレージを交換してください。
AOF永続ログは、クエリ操作は、元のデータを復元するために、これらのコマンドを再実行したときに、サーバーがファイルの最後に、各書き込み操作を再起動したときに、記録されません、サーバーの書き込み操作は、削除するたびに記録されています。

RDBの利点:
このようたら、その後、あなたの全体のRedisのデータベースは、ファイルのバックアップに最適です。一つだけのファイルを、含まれています。たとえば、毎時間にデータの最後の24時間をアーカイブするつもりかもしれませんが、また、毎日のデータの最後の30日に1回アーカイブ。システムが壊滅的障害が発生した後、このバックアップ戦略では、我々は非常に簡単に復元することができます。
災害復旧のために、RDBは非常に良い選択です。我々は非常に簡単に別のファイル圧縮すること、その後、他の記憶媒体に転送することができますので。
パフォーマンスが最大化されています。プロセスのRedisのサービスのために、持続性の初めに、それはあなたが大幅にサービスのIO動作の処理を避けることができるように、子供のうちフォークで、その後、子供がこれらの永続的な作業の完了後に行う唯一の必要があります。
データセットが大きい場合AOF機構に比べて、RDB効率が高くなり始めます。

RDB短所:
あなたは、データの回避損失に最大であるデータの高可用性を保証したい場合は、RDBは良い選択ではないでしょう。そのため持続性のタイミングの前に、システムのダウンタイム現象一度、数分後に、ディスク上の書き込みデータに十分な時間が失われることになるではありません。
フォークの子プロセスによってRDBので、データセットが大きい場合には、それが全体のサーバが数百ミリ秒、あるいは1秒の提供を停止することがありそうならば、仕事の永続データを支援します。

AOFの利点:
このメカニズムは、より高いデータセキュリティ、すなわちデータの永続性をもたらす可能性があります。Redisのは、すべての第2シンク、すべての修正および同期が同期していないことを、同期戦略3を提供します。実際には、非同期同期が毎秒完了している場合、その効率が非常に高く、その差は、システムのダウンタイム現象一度、その後、数秒以内に変更されたデータが失われることです。そして、すべての同期を変更し、我々は、データの変更が即座にディスクに記録されますたびに発生同期の永続性とみなすことができます。このように効率が最低であることを予想されます。非同期に関しては、言うまでもなく、私たちはそれを理解する修正することができると思います。
メカニズムので、ダウンタイムの現象が書き込み処理中に存在していてもそう、それはすでに存在しているログファイルの内容を破壊しないであろう、ログファイルが追加モードで使用されている書き込みます。私たちは、この操作を記述する場合は、半分しかデータ現れシステムのクラッシュは、私たちがでツールのRedis-チェックAOFデータの整合性の問題を解決するために、心配次回の起動時のRedisの前に、私たちがすることができないことです。
ログが大きすぎる場合、Redisのは自動的にリライトのメカニズムを有効にすることができます。Redisのは、コマンドがこの期間中に実行されるに変更されたものを記録するために、新しいファイルを作成しながら、変更されたデータを維持するのRedisの追加モードは、古いAOFファイルに書き込まれていること。より良いハンドオーバを上書きする時に、データのセキュリティを確保することが可能です。
明らかに備えるAOF形式は、簡単にすべてのログファイルレコードの変更を理解します。実際には、我々は、ファイルを介して再構成データを完了することができます。

AOFの欠点:
データセットの同じ数のため、ファイルAOF RDBファイルよりも一般的に大きくなっています。RDBスピード速いAOFの回復の速度よりも大規模なデータセットを回復します。
同期化政策に応じて、作業効率上AOFが遅くRDBにおけるよりなる傾向にあります。要するに、第二の戦略当たりの同期の効率は、効率的として効率とRDBの比較的高い、無効同期戦略です。
AOFが大きいキャッシュ・コヒーレンシと引き換えにいくつかのパフォーマンスを犠牲にしている、またはRDB動作時間ほど頻繁に書くことを喜んでいるよう両方の選択基準は、手動で実行するために、より高いパフォーマンスと引き換えにバックアップを有効にしないと、システムを見ることです時間保存、バックアップを行います。


RedisのとMemcacheの差:

 

  1. Redisのは、それがより広いアプリケーションシナリオを有するように、データの単純なK / Vタイプをサポートし、また、ストレージ・リストをサポートし、セット、ZSET(ソートセット)、ハッシュデータ構造、等。
  2. Redisの最大の明るいスポットが支援データの永続性にあり、それが停電した後、ディスク、または再起動にデータをバックアップすることができ、実行時に、キャッシュされたデータは、基本的には、データを失うことなく、合理的なRedisの構成限り、再びメモリにロードすることができます。
  3. Redisのマスタースレーブモードのサポートの応用。
  4. 単一の最大限界値が1ギガバイトでRedisの、そしてMemcachedのは1メガバイトのデータを保存することができます。
  5. 同時実行シナリオでメモリキャッシュ、CASは一貫性を確保することができ、そしてRedisのトランザクション・サポートは、トランザクションの動作の各連続実行を確実にするために、比較的弱いです。
  6. パフォーマンスは、読み取りおよび書き込み操作のRedisのは少し先のMemcachedのです。
  7. MemcachedのRedisのメモリ管理はそう、メタデータのメタデータより小さく、比較的に言えば、非常に少ないオーバーヘッドは複雑ではありません。
  8. memcachedをのみサポートされているデータ型は、文字列の文字列である文字列は、追加治療を必要としないため、読み取り専用のデータ・キャッシュに最適です。
     
公開された72元の記事 ウォン称賛7 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_39399966/article/details/104360598