RedisのとMemcacheの違い、比較の利点と欠点

出典:https://www.cnblogs.com/JavaBlackHole/p/7726195.html

1、RedisのMemcacheのメモリに記憶されたデータを、全てのメモリデータベース。しかし、また、そのようなので、上の写真、ビデオ、などmemcacheの他のものを、キャッシュするために使用することができます。 
また、記憶リスト、セット、ハッシュおよび他のデータ構造を提供しながら2、Redisののみ、データの単純なK / V・タイプをサポートします。 
図3は、仮想メモリは、物理メモリを使い切った場合、ディスクにスワップされた値に、いくつかの長い無駄を移動-Redis 
、例えばセット内の指定、-memcache有効期限ポリシー、設定キー1 0 0 8、すなわち、無期限4。Redisのは、例えば、名前10は、例えば期限切れ、によって設定期限切れ 
。5、分散- memcacheのクラスタ・セットを、マルチマスターから作らmagentを使用して、Redisのマルチマスタから行うことができます。マスタースレーブすることができ 
、データ・ストレージ・セキュリティがハングアップ-memcache後のデータ、6ない; Redisのは、定期的にディスクに保存することができます(永続的な) 
7、災害復旧は、回復不能なデータの後にハングアップ-memcache、データの損失の後にRedisのことができますAOFによって回収 
8は、Redisのは、バックアップデータ、すなわち、データのバックアップマスタ・スレーブモードをサポートします。

異なるmemcacheのとRedisの、次のリストのレコードのいくつかの関連する引数について:

そのmemecache異なるRedisの[2]に: 
1、ストレージ: 
memecacheメモリ内に存在するすべてのデータが、停電がハングアップし、データがメモリサイズ超えることができない 
部分がハードディスク上に有するRedisのを、これは、永続的なデータを確保します持続性とサポートデータ(著者注:スナップショットとログの2種類がありますが、プロファイルのスナップショットパラメータに特に注意を払って、実際に使用されると、永続的な方法をAOF、またはサーバー上で頻繁にフルロードダンプを作成する可能性があります)。 
2は、データ型がサポート: 
データのサポートに関するよりRedisのmemecacheはるかに。 
3、別の基礎となるモデル使用: 
Redisの新しいバージョンのシステムコールシステムの機能のほとんどは、それが移動して要求するためにいくつかの時間を無駄になりますので、直接、構築されたVMのメカニズムを所有します。 
4、異なる動作環境: 
Redisのは現在だけので、他のシステムのためのサポートの必要性を排除し、LINUX公式ラインアップをサポートしていますので、これについてMicrosoftは、後のグループがありますが、あなたがより良い、システム環境の最適化に注力するために使用することができます彼は、パッチを書きました。しかし、トランクに入れていません

個人の合計アップ、持続的な需要やデータ構造とプロセスが進んでいるアプリケーションの要件、選択のRedis、他の簡単なキー/バリューストア、選択memcacheのがあります。

memcachedのとRedisのは以下の2つのオプションに焦点を当てて: 
導入memcachedの 
memcachedのは、データベースの負荷を軽減する動的なWebアプリケーションのために使用される高性能、分散メモリオブジェクトキャッシュシステムです。キャッシュメモリ内のデータとデータベース駆動型のWebサイトの動的な、速度を提供するために、データベースオブジェクトから読み取る数にそれを減らすことで、それは今のLiveJournal、はてな、Facebookの、Voxの、使用されているのLiveJournal や他の企業を。

Memcachedの作品は分析する 
多くのWebアプリケーションでは、RDBMS、アプリケーションサーバとブラウザでの表示から読み出されたデータにデータを保存します。しかし、データ、集中アクセスの増加量と、遅延に重大な影響を示しサイトの劣化に応じて、重い負担RDBMSデータベースが存在します。memcachedのスケーラビリティを向上させる、動的なWebアプリケーションの速度を向上させるために、データベースアクセスの数を減らすことによって、データベースクエリの結果をキャッシュし、高性能、分散メモリキャッシュサーバです。以下の図は、協調作業メモリキャッシュデータベース側を示す: 
ここで説明する絵を書きます 
以下のような処理であることを特徴とする 
データ1.チェックがキャッシュに存在するか否かを要求しているユーザは、存在する場合、唯一のデータベースを照会することなく、データ要求が返される指示。 
2.要求されたデータは、キャッシュ内のデータベースを照会するために行くには、この時間を見つけていない場合。同時に要求されたデータ、キャッシュコピーに保存されたデータを返します。 
3.(データの場合は、変更、または削除されたような)「新鮮さ」、いつでもデータの変更、ユーザーが古いのキャッシュに取得しないことを確実にするために更新される、キャッシュの同期化情報をキャッシュを維持するためにデータ。

:分散高速動作としてmemcachedのキャッシュサーバは、以下の特徴有し 
1.単純なプロトコル 
2.イベント処理基づいlibevent 
3.内部メモリストレージ 
互いに通信しない4.memcached分散を

分散スケーラビリティを実装する方法? 
memcachedサーバ側に実装されていない分散が、クライアントアプリケーションに実装、すなわち、データのビルトインアルゴリズムを介して、ターゲットノードの開発、以下に示すように: 
ここで説明する絵を書きます

Redis 介绍 
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,当前 Redis的应用已经非常广泛,国内像新浪、淘宝,国外像 Flickr、Github等均在使用Redis的缓存服务。

Redis 工作方式分析 
Redis作为一个高性能的key-value数据库具有以下特征: 
1.多样的数据模型 
2.持久化 
3.主从同步 
Redis支持丰富的数据类型,最为常用的数据类型主要由五种:String、Hash、List、Set和Sorted Set。Redis通常将数据存储于内存中,或被配置为使用虚拟内存。Redis有一个很重要的特点就是它可以实现持久化数据,通过两种方式可以实现数据持久化:使用RDB快照的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的AOF日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。 Redis支持将数据同步到多台从数据库上,这种特性对提高读取性能非常有益。

Redis如何实现分布式可拓展性? 
2.8以前的版本:与Memcached一致,可以在客户端实现,也可以使用代理,twitter已开发出用于Redis和Memcached的代理Twemproxy 。 
3.0 以后的版本:相较于Memcached只能采用客户端实现分布式存储,Redis则在服务器端构建分布式存储。Redis Cluster是一个实现了分布式且允许单点故障的Redis高级版本,它没有中心节点,各个节点地位一致,具有线性可伸缩的功能。如图给出Redis Cluster的分布式存储架构,其中节点与节点之间通过二进制协议进行通信,节点与客户端之间通过ascii协议进行通信。在数据的放置策略上,Redis Cluster将整个 key的数值域分成16384个哈希槽,每个节点上可以存储一个或多个哈希槽,也就是说当前Redis Cluster支持的最大节点数就是16384。 
ここで説明する絵を書きます

综合结论

应该说Memcached和Redis都能很好的满足解决我们的问题,它们性能都很高,总的来说,可以把Redis理解为是对Memcached的拓展,是更加重量级的实现,提供了更多更强大的功能。具体来说:

1.性能上: 
性能上都很出色,具体到细节,由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比 
Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起 Memcached,还是稍有逊色。

2.内存空间和数据量大小: 
MemCached可以修改最大内存,采用LRU算法。Redis增加了VM的特性,突破了物理内存的限制。

3.ハンディの操作: 
データキャッシュのための単一のmemcachedのデータ構造のみ、およびRedisのは、豊富なデータ型をサポートし、データは、リッチ運転は、このようにデータネットワークの容量およびIOの数を減少させる、サーバー側で直接であってもよいです。

4.信頼性: 
memcachedは電源オフまたは再起動した後、データの永続性、データの消失をサポートしていませんが、安定性が保証されています。Redisのは、データの永続性とデータ回復をサポートして単一障害点を可能にするだけでなく、パフォーマンスのために支払うことになります。

5.アプリケーションシナリオ: 
Memcachedの:パフォーマンスを向上させる、データベースの負荷を軽減する動的システム、複数(例えば大すべてのネットワークユーザ情報の問い合わせの数、友人情報、記事、情報、など)は、データの状況を大量に少ない読み書きするためのキャッシュとして。 
Redisの:適当に高く、高いセキュリティ要件(例えばXinlangマイクロボーがカウント及びシステム、データ・セキュリティの読み書き効率要件と複雑なシステムにデータ処理サービスは、読み取りおよび書き込みするために必要とされます高いです)。

パートは、慎重な検討必要はありません 
1.Memcached単一のキーと値の大きさが限られている、唯一の最大値の1メガバイトをサポートし、最大限のサポートRedisの512メガバイト 
、信頼性についての要件を唯一のメモリキャッシュを2.Memcached、Redisのは、メモリデータベースを好みます、比較的信頼性の高い対 
本質的に3、Memcachedのはただ1つのキー値キャッシュメモリ、Redisのデータ構造は、データベース・メモリであり、5つのデータタイプをサポートするので、単純なキャッシュRedisの効果に加えて、さらにいくつかの簡単な論理演算、Redisのキャッシュだけでなく扱うことができるだけでなく、データベースとして 
のRedis手段分散クラスタ内の前記新バージョン(3.0)、クライアント要求自体のバランスをとる、すなわちクラスタ、各ノードが通信することができる、こと保守性が強く、ラインを展開します。

おすすめ

転載: blog.csdn.net/lihua5419/article/details/91816559