この記事では、PHP インタビューの質問 6 での memcache と Redis の違いを紹介します。これには特定の参考値がありますので、必要な友達に参考にしてください。
Memcache と Redis の違い:
* Redis の場合。 , すべてのデータが常にメモリに保存されるわけではなく、これが Memcache と比較した最大の違いです。
* Redis は多くの点でデータベースの特徴を備えており、つまりデータベース システムですが、Memcache は単なる単純な K/V キャッシュです。
* 拡張にはクラスタリングの実装方法が必要です: マスター/スレーブ、ハッシュ。
* 100k を超えるデータでは、Memcache のパフォーマンスが Redis よりも高くなります。
* メモリ使用効率について言えば、単純なキーと値のストレージを使用すると、Memcached のメモリ使用率が高くなります。Redis がキーと値のストレージにハッシュ構造を使用すると、圧縮が組み合わされるため、メモリ使用率が高くなります。 . Memcache よりも高くなります。もちろん、これはアプリケーションのシナリオとデータの特性によって異なります。
* データの永続性とデータの同期に関する要件がある場合は、Memcache にはこれら 2 つの機能がないため、Redis を選択することをお勧めします。システムのアップグレードまたは再起動後にキャッシュされたデータが失われないことを願うだけでも、Redis を選択するのが賢明です。
* 書き込みパフォーマンスの点では、Redis と Memcache に大きな違いはありません。
共通点: Memcache と Redis はどちらもインメモリ データベースです。
Memcache
Memcache はマルチコアを利用でき、単一インスタンスのスループットが非常に高く、最大負荷容量に適しています。
Redis とは異なり、単純なキー/値データ構造のみをサポートします。豊富なデータ型をサポートします。
永続化は不可能、データはバックアップできず、キャッシュのみに使用可能、再起動後にすべてのデータが失われます
文字列、リスト、辞書、セット、zset、ハイパーログログなど、さまざまなデータ構造をサポートします
シングルスレッドのリクエストでは、すべてのコマンドがシリアルに実行され、同時実行状況でのデータの整合性の問題を考慮する必要がありません。
永続化操作をサポートし、データ バックアップまたはデータ リカバリ操作のために aof および rdb データをディスクに永続化できます。これは、データ損失を防ぐためのより良い方法です。
aof の圧縮ルール (キーの追加や削除など) によってフィルタリングされます。
レプリケーションによるデータ レプリケーションをサポートします。 マスター/スレーブ メカニズムを通じて、データをリアルタイムで同期的にレプリケートでき、マルチレベル レプリケーションと増分レプリケーションをサポートします。パブリッシュ/サブスクライブのサポート メッセージ サブスクリプション メカニズムは、メッセージのサブスクリプションと通知に使用できます。
単純なトランザクション要件をサポートしていますが、業界では使用シナリオがほとんどなく、成熟していません。
Memcache と Redis の違い:
* Redis は多くの点でデータベースの特徴を備えており、つまりデータベース システムですが、Memcache は単なる単純な K/V キャッシュです。
* 拡張にはクラスタリングの実装方法が必要です: マスター/スレーブ、ハッシュ。
* 100k を超えるデータでは、Memcache のパフォーマンスが Redis よりも高くなります。
* メモリ使用効率について言えば、単純なキーと値のストレージを使用すると、Memcached のメモリ使用率が高くなります。Redis がキーと値のストレージにハッシュ構造を使用すると、圧縮が組み合わされるため、メモリ使用率が高くなります。 . Memcache よりも高くなります。もちろん、これはアプリケーションのシナリオとデータの特性によって異なります。
* データの永続性とデータの同期に関する要件がある場合は、Memcache にはこれら 2 つの機能がないため、Redis を選択することをお勧めします。システムのアップグレードまたは再起動後にキャッシュされたデータが失われないことを願うだけでも、Redis を選択するのが賢明です。
* 書き込みパフォーマンスの点では、Redis と Memcache に大きな違いはありません。
共通点: Memcache と Redis はどちらもインメモリ データベースです。
違い:
Memcache
豊富なデータ型をサポートできる Redis とは異なり、単純なキー/値データ構造のみをサポートします。
永続化は不可能、データはバックアップできず、キャッシュのみに使用可能、再起動後はすべてのデータが失われます
レディス
文字列、リスト、辞書、セット、zset、ハイパーログログなど、さまざまなデータ構造をサポートします
シングルスレッドのリクエストでは、すべてのコマンドがシリアルに実行され、同時実行状況でのデータの整合性の問題を考慮する必要がありません。
永続化操作をサポートし、データ バックアップまたはデータ リカバリ操作のために aof および rdb データをディスクに永続化できます。これは、データ損失を防ぐためのより良い方法です。
aof の圧縮ルール (キーの追加や削除など) によってフィルタリングされます。
レプリケーションによるデータ レプリケーションをサポートします。 マスター/スレーブ メカニズムを通じて、データをリアルタイムで同期的にレプリケートでき、マルチレベル レプリケーションと増分レプリケーションをサポートします。パブリッシュ/サブスクライブのサポート メッセージ サブスクリプション メカニズムは、メッセージのサブスクリプションと通知に使用できます。
単純なトランザクション要件をサポートしていますが、業界では使用シナリオがほとんどなく、未熟です
php インタビューの質問 5: nginx が php を呼び出す方法と php-fpm の役割と動作原理
php の実装 インタビューの質問 3 番目: yii2 と yii の違い
以上がPHP 面接の質問 6: memcache と redis の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。