ホームページ  >  記事  >  バックエンド開発  >  Redis と Memcached の違いは何ですか?

Redis と Memcached の違いは何ですか?

WBOY
WBOYオリジナル
2016-07-06 13:51:381075ブラウズ

Redis にはキーと値のペアのストレージもあり、メモリに保存することもできます。また、永続ストレージもサポートされており、Redis クラスター、分散デプロイメント、およびミラー同期がすべてネイティブにサポートされているため、memcached よりも便利です (memcached は書き込む必要があります)。独自の一貫性) 独自のハッシュ アルゴリズムを使用して、特定のキーに対応する値がどの memcached ノードに格納されているかを判断します。これは非常に面倒です)、では、memcached は何に使用されるのでしょうか?
memcache の代わりに redis を使用しないのはなぜですか?
(PHP のチュートリアルはまだたくさんあるようで、教科書ではすべて memcached について説明されていますが、redis についての言及はまだ比較的少ないです。私は他の人のブログを読んで初めてそのようなことについて知りました。)

返信内容:

Redis にはキーと値のペアのストレージもあり、メモリに保存することもできます。また、永続ストレージもサポートされており、Redis クラスター、分散デプロイメント、ミラー同期がすべてネイティブにサポートされているため、memcached よりも便利です (memcached は書き込む必要があります)。独自の一貫性) 独自のハッシュ アルゴリズムを使用して、特定のキーに対応する値がどの memcached ノードに格納されているかを判断します。これは非常に面倒です)、では、memcached は何に使用されるのでしょうか?
memcache の代わりに redis を使用しないのはなぜですか?
(PHP のチュートリアルはまだたくさんあるようで、教科書ではすべて memcached について説明されていますが、redis についての言及はまだ比較的少ないです。私は他の人のブログを読んで初めてそのようなことについて知りました。)

状況次第です!

  • Memcached是多线程非阻塞IO复用的网络模型;RedisシングルスレッドIO再利用モデルを使用する

  • Memcached使用预分配的内存池的方式;Redisオンサイトメモリアプリケーションを使用してデータを保存します

  • Memcached的服务器端互相完全独立;Redisサーバー側でのクラスタリングのサポートの構築を計画します

  • Memcached可以使用多核;Redisシングルコアのみを使用してください

要するに、シンプルなkey-value存储的话,Memcached的内存利用率更高,当需要除key/value之外的更多数据类型支持时,使用Redisを使用する方が適しています。お役に立てば幸いです

Redis は Memcached を置き換えていますが、巨大なシステムにとって Redis は新しいものであり、完全に置き換えるには時間がかかることを知っておく必要があります。
現在、Weibo は Redis クラスターを使用しています。

ご招待ありがとうございます~~

以前はインターネットなしで外出していたので、私の個人的な意見といくつかの参考資料を提供します。もし間違いがあれば、それを受け取ってください。良いと思います、高評価をお願いします~~~

まず最初に、ポイントを説明します。存在には合理性があり、それ自体に価値があることを証明するためにそれを使用する人もいます。

簡単な説明

memcached と redis は非常に似ており、どちらもメモリ内にデータが保存され、tcp 経由で直接アクセスされます。利点は、データ型が限定され、クエリ機能が弱いことです。キャッシュとして使用されます。

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

メモリキャッシュ

Memcached の利点:

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

  • 最大負荷容量とサーバーの効果的な解凍に適しています。

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

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

Memcached の制限:

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

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

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

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

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

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

レディス

Redis の利点:

  • string (文字列)、
    list (ダブルリンクリスト)、dict (ハッシュテーブル)、set (セット)、zset (ソートセット)、hyperloglog (カーディナリティ推定) など、さまざまなデータ構造をサポートします。

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

  • レプリケーションによるデータ レプリケーションのサポート: マスター スレーブ メカニズムを通じて、データをリアルタイムで同期的にレプリケートできます。マスター スレーブ メカニズムは、Redis が HA を実行するための重要な手段です。

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

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

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

Redis の制限事項:

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

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

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

まとめ

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

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

テクノロジーの点では、redis は memcached よりもまだ新しいですが、成熟すると、memcached の方が優れているはずです。さらに、redis のデータベース特性により、mongodb の方が優れていると考えられています。

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

ニーズを見て、熟練度を見てください

実際、この 2 つのパフォーマンスは似ていますが、redis のパフォーマンスがわずかに優れています。
memcached に代わる redis がトレンドです。

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