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