ホームページ  >  記事  >  バックエンド開発  >  PHP 面接の質問 6: memcache と redis の違い

PHP 面接の質問 6: memcache と redis の違い

不言
不言オリジナル
2018-04-18 09:47:265105ブラウズ

この記事では、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 とは異なり、単純なキー/値データ構造のみをサポートします。豊富なデータ型をサポートします。
永続化は不可能、データはバックアップできず、キャッシュのみに使用可能、再起動後にすべてのデータが失われます

Redis

文字列、リスト、辞書、セット、zset、ハイパーログログなど、さまざまなデータ構造をサポートします
シングルスレッドのリクエストでは、すべてのコマンドがシリアルに実行され、同時実行状況でのデータの整合性の問題を考慮する必要がありません。
永続化操作をサポートし、データ バックアップまたはデータ リカバリ操作のために aof および rdb データをディスクに永続化できます。これは、データ損失を防ぐためのより良い方法です。
aof の圧縮ルール (キーの追加や削除など) によってフィルタリングされます。
レプリケーションによるデータ レプリケーションをサポートします。 マスター/スレーブ メカニズムを通じて、データをリアルタイムで同期的にレプリケートでき、マルチレベル レプリケーションと増分レプリケーションをサポートします。パブリッシュ/サブスクライブのサポート メッセージ サブスクリプション メカニズムは、メッセージのサブスクリプションと通知に使用できます。
単純なトランザクション要件をサポートしていますが、業界では使用シナリオがほとんどなく、成熟していません。

Memcache と Redis の違い:

* Redis では、すべてのデータが常にメモリに保存されるわけではありません。これが Memcache と比較した最大の問題です。 。 違い。

* Redis は多くの点でデータベースの特徴を備えており、つまりデータベース システムですが、Memcache は単なる単純な K/V キャッシュです。
* 拡張にはクラスタリングの実装方法が必要です: マスター/スレーブ、ハッシュ。
* 100k を超えるデータでは、Memcache のパフォーマンスが Redis よりも高くなります。
* メモリ使用効率について言えば、単純なキーと値のストレージを使用すると、Memcached のメモリ使用率が高くなります。Redis がキーと値のストレージにハッシュ構造を使用すると、圧縮が組み合わされるため、メモリ使用率が高くなります。 . Memcache よりも高くなります。もちろん、これはアプリケーションのシナリオとデータの特性によって異なります。
* データの永続性とデータの同期に関する要件がある場合は、Memcache にはこれら 2 つの機能がないため、Redis を選択することをお勧めします。システムのアップグレードまたは再起動後にキャッシュされたデータが失われないことを願うだけでも、Redis を選択するのが賢明です。
* 書き込みパフォーマンスの点では、Redis と Memcache に大きな違いはありません。
共通点: Memcache と Redis はどちらもインメモリ データベースです。
違い:
Memcache

Memcache はマルチコアを利用でき、単一インスタンスのスループットは非常に高く、最大負荷容量に適した数十万 QPS に達することができます

豊富なデータ型をサポートできる Redis とは異なり、単純なキー/値データ構造のみをサポートします。
永続化は不可能、データはバックアップできず、キャッシュのみに使用可能、再起動後はすべてのデータが失われます

レディス
文字列、リスト、辞書、セット、zset、ハイパーログログなど、さまざまなデータ構造をサポートします
シングルスレッドのリクエストでは、すべてのコマンドがシリアルに実行され、同時実行状況でのデータの整合性の問題を考慮する必要がありません。
永続化操作をサポートし、データ バックアップまたはデータ リカバリ操作のために aof および rdb データをディスクに永続化できます。これは、データ損失を防ぐためのより良い方法です。
aof の圧縮ルール (キーの追加や削除など) によってフィルタリングされます。
レプリケーションによるデータ レプリケーションをサポートします。 マスター/スレーブ メカニズムを通じて、データをリアルタイムで同期的にレプリケートでき、マルチレベル レプリケーションと増分レプリケーションをサポートします。パブリッシュ/サブスクライブのサポート メッセージ サブスクリプション メカニズムは、メッセージのサブスクリプションと通知に使用できます。
単純なトランザクション要件をサポートしていますが、業界では使用シナリオがほとんどなく、未熟です

関連する推奨事項:

php インタビューの質問 5: nginx が php を呼び出す方法と php-fpm の役割と動作原理

phpインタビューの質問 4 番目: autoload

php の実装 インタビューの質問 3 番目: yii2 と yii の違い

以上がPHP 面接の質問 6: memcache と redis の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。