ホームページ >データベース >Redis >PHPにおけるredisとmemcacheの違い

PHPにおけるredisとmemcacheの違い

藏色散人
藏色散人オリジナル
2019-06-19 13:32:392417ブラウズ

PHPにおけるredisとmemcacheの違い

PHP における redis と memcache の違い

PHP における Memcached と redis は非常に似ており、どちらも同じです。インメモリ データベース : データはメモリに保存され、tcp を通じて直接アクセスされます。利点は高速で同時実行性が高いことです。欠点は、データ型が限定され、クエリ機能が弱いことです。一般にキャッシュとして使用されます。

推奨事項: "Redis ビデオ チュートリアル " "memcached ビデオ チュートリアル "

質問者は、redis は memcached のすべてのことを実行できると言いました。 ? 他に memcached を使用している人はいますか?なぜなら、この 2 つは完全に互換性があるわけではなく、それぞれ独自の長所と短所もあります:

Memcached

Memcached の利点:

Memcached はマルチコアを活用でき、単一インスタンスのスループットは非常に高く、数十万 QPS に達する可能性があります (キーと値のバイト サイズとサーバー ハードウェアのパフォーマンスによって異なります)。日常環境におけるピークQPSは約4~約6wです。

最大負荷容量に適しており、サーバーを効果的に解凍します。

セッション ハンドルとして直接構成をサポートします。

設定とメンテナンスにおける落とし穴は比較的少ないです。

Memcached の制限:

データ構造は非常に単純かつ単一であり、豊富なデータ型をサポートできる Redis とは異なり、単純なキー/値データ構造のみをサポートします。

永続化は不可能で、データはバックアップできず、キャッシュのみに使用でき、再起動するとすべてのデータが失われます。

データ同期を実行できず、MC 内のデータを他の MC インスタンスに移行できません。

Memcached メモリ割り当てでは、Slab

割り当てメカニズムを使用してメモリを管理します。値のサイズ分布に大きな違いがあると、メモリ使用率が低下し、使用率が低い場合でもキックアウトなどの問題が発生します。ユーザーは価値設計に注意を払う必要があります。

memcached サーバーは、水平拡張をネイティブにサポートしていません。分散キャッシュを実装するには、クライアント上でキャッシュ分散戦略を記述する必要があります。データ同期を実行できないため、本番環境で 1 台のマシンに障害が発生すると、一部のビジネスに影響を及ぼす可能性があります。オペレーション。 。

Redis

Redis の利点:

文字列 (文字列)、

などの複数のデータ構造をサポートします。

list (ダブルリンクリスト)、dict (ハッシュテーブル)、set (セット)、zset (ソートセット)、hyperloglog (カーディナリティ推定) など。

永続化操作をサポートし、AOF および RDB データをディスクに永続化して、データ損失を防ぐためのより良い方法であるデータ バックアップまたはデータ リカバリ操作を実行できます。

レプリケーションによるデータ レプリケーションをサポートします。マスター スレーブ メカニズムにより、データをリアルタイムで同期的にレプリケートでき、マルチレベル レプリケーションと増分レプリケーションがサポートされます。マスター スレーブ メカニズムは、Redis にとって重要な手段です。 HAを実行します。

シングルスレッドのリクエストでは、すべてのコマンドがシリアルに実行され、同時実行状況でのデータの整合性の問題を考慮する必要がありません。

メッセージのサブスクリプションと通知に使用できるパブリッシュ/サブスクライブ メッセージ サブスクリプション メカニズムをサポートします。

単純なトランザクション要件をサポートしていますが、業界では使用シナリオがほとんどなく、まだ成熟していません。

Redis の制限:

Redis は 1 つのスレッドのみを使用でき、そのパフォーマンスは CPU のパフォーマンスによって制限されるため、CPU の 1 つのインスタンスが到達できるのは 1 つのスレッドのみです。 1 秒あたり最大 5 ~ 6wQPS (データ構造、データ サイズ、サーバー ハードウェアのパフォーマンスによって異なりますが、毎日の環境における QPS のピークは約 1 ~ 2w)。

単純なトランザクション要件をサポートしますが、業界での使用シナリオが少なく、成熟していないため、長所と短所の両方があります。

Redis は文字列型でより多くのメモリを消費します。dict (ハッシュ テーブル) を使用してストレージを圧縮し、メモリ消費を削減できます。

概要

私の意見では、Redis は多くの点でデータベースの特徴を備えている、またはデータベース システムであるのに対し、Memcached は単なる K/V にすぎません。キャッシュ。

そして、redis を使用するか memcached を使用するかは、対象者のニーズによって決まります。キャッシングだけであれば、memcached でほとんどのニーズを満たすのに十分だからです。redis の出現は、より良い選択肢を提供するだけです。 Redis が memcached を完全に置き換えることができるという意味ではありません。これもニーズによって異なります。

技術的には、memcached よりも redis の方が新しいですが、成熟すると、memcached の方が優れているはずです。また、現在、トレンドは mongodb に移り始めています。redis のデータベース特性により、 mongodbの方が良いです。

多くの企業は依然としてキャッシュ戦略で memcached を使用しており、次に redis、そして最後に mongodb を使用しています。私はそのようなものは存在しないことがわかりました。会社のチームが最新のテクノロジーを適用するにはまだ時間がかかります。古いテクノロジーは成熟しており、より安定しているため、この戦略は今でも多くの企業チームで使用されており、これが redis よりも memcached が言及される理由です。

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

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