なぜRedisはMemcachedより使いやすいのか
GitHubバージョンアドレス:https://github.com/cncounter/translation/blob/master/tiemao_2014/Redis_beats_Memcached/Redis_beats_Memcached.md
副題:Redisは新興の汎用ストレージシステムであり、Memcachedには適用分野がある.
MemcachedかRedisか?現代の高性能Webアプリケーションでは議論が続いている.リレーショナル・データベース・ベースのWebアプリケーションでパフォーマンスを向上させる必要がある場合、キャッシュの使用はほとんどのアーキテクチャの最初の選択であり、当然、MemcachedとRedisが優先されます.
共通の特徴
いずれもkey-value形式のメモリデータベースいずれもNoSQLファミリーのデータ管理ソリューション同じkey-valueデータモデルに基づいている
すべてのデータがメモリに格納されます(これもキャッシュに適用される理由です)パフォーマンスのスコアは、データのスループットや遅延などの指標を含む.
いずれも成熟したオープンソースプロジェクトで人気のあるkey-valueストレージシステムMemcachedは2003年にBrad FitzpatrickからLiveJournalサイトに開発された.そしてC言語で書き直し(初版はPerl実現)、公衆に開放され、現代のWebシステム開発の礎となった.現在のMemcachedの発展方向は、新しい機能特性を追加するのではなく、安定性とパフォーマンスの最適化を改善することです.
Redisは2009年にSalvatore Sanfilippoによって作成され、今日に至るまでSanfilippoはRedisの唯一の開発者とコードメンテナンス者である.Redisは「Memcached拡張版(Memcached on steroids)」とも呼ばれているが、Redisの一部はMemcachedの経験の総括の上で構築されているため、驚くべきことではない.RedisはMemcachedよりも多くの機能特性を有し、より柔軟で、より強く、より複雑である.
MemcachedとRedisは多くの企業や大量の生産システムに採用されており、様々な言語開発をサポートするクライアントであり、SDKが豊富である.実際,上位規模のインターネットWeb開発言語では,MemcachedやRedisをサポートしないものはほとんどない.
なぜMemcachedとRedisがこんなに流行っているのですか?超高性能なだけでなく、比較的簡単なためです.プログラマーにとってMemcachedやRedisを上手に使うのは簡単です.インストールと設定をシステムに統合するには、数分しかかかりません.そのため、わずかな時間と労力を費やすと、システムのパフォーマンスを大幅に向上させることができます.通常は1桁向上します.シンプルなソリューションですが、大きなパフォーマンス収益を得ることができます.これは想像以上に酸っぱいです.
Memcached適用シーン
Redisは新興ソリューションであるため、より多くの機能特性を提供し、MemcachedよりもRedisは一般的により良い選択である.2つの特定のシーンでMemcachedはより良い選択かもしれません.
1つ目は、HTMLコードクリップのような微細な静的データです.Memcachedのメモリ管理はRedisほど複雑ではないため、Memcachedのメタデータmetadataが小さく、相対的に余分なオーバーヘッドが少ないため、パフォーマンスが向上します.Memcachedが唯一サポートするデータ型は文字列
2番目のシーンは、MemcachedがRedisよりも水平に拡張しやすいことです.なぜなら、その設計と機能が簡単で、Memcachedが拡張しやすいからです.ニュースによると、Redisは間もなく3.0版(CAバージョンのリリースノートを読む)に信頼できるクラスタサポートを内蔵する[しかし、ずっとチケットを飛ばしている].
Redisの活躍の場
システムを残すなどの環境制約を受けない限り、またはビジネスが上記の2つの状況に合致しない限り、Redisを優先的に選択する必要があります.Redisをキャッシュとして使用することで,キャッシュ内容を最適化することで,システム効率を極めて向上させることができる.
Redisの利点はキャッシュ管理にあることは明らかです.キャッシュは、あるデータ回収メカニズム(data eviction mechanism)によって必要に応じて古いデータをメモリから削除し、新しいデータにスペースを空ける.Memcachedのデータ回収メカニズムは、LRU(Least Recently Used、最近最も少ない)アルゴリズムを使用し、新しいデータサイズと差の少ない古いデータブロックを優先的にクリアします.対照的に、Redisは、パーティクル制御の期限切れキャッシュを可能にし、6つの異なるポリシーを選択できます.Redisはまた、より複雑なメモリ管理方法と回収ポリシーを採用しています.
Redisは、キャッシュされたオブジェクトに対してより柔軟性を提供します.一方、Memcached制限keyは250バイト、制限valueは1 MBであり、純テキストStringのみで通信可能である.Redisのkeyとvalueのサイズ制限はいずれも512 MBであり、バイナリセキュリティの【すなわち、符号化に関係なくデータを失わない】である.Redisは6種類のデータ型を提供し、キャッシュおよび管理キャッシュをよりスマートで便利にし、アプリケーション開発者に無限の可能性のある世界を開きました.
オブジェクトをシーケンス化して文字列で格納するよりも、RedisはHashによってオブジェクトのフィールドと値を格納し、単一keyで管理できます.
Memcachedでオブジェクトを更新するには、次の手順に従います.
文字列全体の取得オブジェクトに逆シーケンス化する値を変更
オブジェクトを再度シーケンス化するキャッシュで文字列全体を新しい文字列に置換するそして更新するたびにこんなひどいことをします.
一方,Redis Hash方式を用いることで,資源消費を大幅に低減し,性能を向上させることができる.ListやSetのようなRedisの他のデータ型は、より複雑なキャッシュ管理モードを実現するために使用することができる.
Redisのもう一つの大きな利点は、格納されているデータが不透明であることであり、サーバ側でこれらのデータを直接操作できることを意味する.160以上のコマンドの大部分がデータ操作に利用できるため、サービス側スクリプト呼び出しによるデータ処理が現実となっている.これらの組み込みコマンドとユーザー・スクリプトを使用すると、ネットワークを介して別のシステムにデータを転送することなく、データ・タスクを直接柔軟に処理できます.
Redisは、クラッシュ/再起動後にキャッシュを迅速にロードできるようにするために、オプション/調整可能なデータ永続化を提供します.キャッシュ内のデータは不安定で瞬時であると考えられていますが、キャッシュシステムでデータをディスクに永続化することは価値があります.再起動後すぐにウォームアップをロードする方法は、時間が短く、プライマリ・データベース・システムのオーバーヘッドが軽減されます.
最後に、Redisは主従レプリケーションを提供する.Replicationは、高可用性のcacheシステムを実現するために使用することができ、一部のサーバがダウンタイムした場合でも、絶え間ないサービスを提供することができる.キャッシュ・サーバがクラッシュした場合、一部のユーザーとプログラムだけが短時間で影響を受けると仮定すると、ほとんどの場合、キャッシュ・コンテンツとサービスの可用性を保証するために有効なソリューションが必要です.
現在、オープンソースソフトウェアは、最適な実用技術案を提供しています.キャッシュを使用してアプリケーションシステムのパフォーマンスを向上させる必要がある場合、RedisとMemcachedは最適な製品レベルのソリューションです.しかし、その豊富な機能と先進的な設計を考慮すると、ほとんどの場合、Redisはあなたの最初の選択であるべきです.
著者紹介:Itamar Haber(@itamarhaber)は、開発者に完全に管理されているMemcachedとRedisクラウドサービスを提供するRedis Labsのチーフ開発者です.長年のソフトウェア製品の研究開発経験を持ち、Xeround、Etagon、Amicada、and M.N.S Ltd.で管理と指導職を務めたことがある.ItamarはNorthwestern and Tel-Aviv UniversitiesdのKellogg-Recanti工商管理修士、およびScience in Computer Science学士を取得した.
関連情報:
MemcachedでJava企業の応用性能を向上させ、Part 1:アーキテクチャと配置MemcachedでJava企業の応用性能を向上させ、Part 2:データベースベースのwebApp Cacheの争い:AzureとAWSアップグレードキャッシュサービス原文リンク:Why Redis beats Memcached for caching
原文日付:2014-10-15
翻訳日:2014-10-23
アンカー
副題:Redisは新興の汎用ストレージシステムであり、Memcachedには適用分野がある.
MemcachedかRedisか?現代の高性能Webアプリケーションでは議論が続いている.リレーショナル・データベース・ベースのWebアプリケーションでパフォーマンスを向上させる必要がある場合、キャッシュの使用はほとんどのアーキテクチャの最初の選択であり、当然、MemcachedとRedisが優先されます.
共通の特徴
いずれもkey-value形式のメモリデータベースいずれもNoSQLファミリーのデータ管理ソリューション同じkey-valueデータモデルに基づいている
すべてのデータがメモリに格納されます(これもキャッシュに適用される理由です)パフォーマンスのスコアは、データのスループットや遅延などの指標を含む.
いずれも成熟したオープンソースプロジェクトで人気のあるkey-valueストレージシステムMemcachedは2003年にBrad FitzpatrickからLiveJournalサイトに開発された.そしてC言語で書き直し(初版はPerl実現)、公衆に開放され、現代のWebシステム開発の礎となった.現在のMemcachedの発展方向は、新しい機能特性を追加するのではなく、安定性とパフォーマンスの最適化を改善することです.
Redisは2009年にSalvatore Sanfilippoによって作成され、今日に至るまでSanfilippoはRedisの唯一の開発者とコードメンテナンス者である.Redisは「Memcached拡張版(Memcached on steroids)」とも呼ばれているが、Redisの一部はMemcachedの経験の総括の上で構築されているため、驚くべきことではない.RedisはMemcachedよりも多くの機能特性を有し、より柔軟で、より強く、より複雑である.
MemcachedとRedisは多くの企業や大量の生産システムに採用されており、様々な言語開発をサポートするクライアントであり、SDKが豊富である.実際,上位規模のインターネットWeb開発言語では,MemcachedやRedisをサポートしないものはほとんどない.
なぜMemcachedとRedisがこんなに流行っているのですか?超高性能なだけでなく、比較的簡単なためです.プログラマーにとってMemcachedやRedisを上手に使うのは簡単です.インストールと設定をシステムに統合するには、数分しかかかりません.そのため、わずかな時間と労力を費やすと、システムのパフォーマンスを大幅に向上させることができます.通常は1桁向上します.シンプルなソリューションですが、大きなパフォーマンス収益を得ることができます.これは想像以上に酸っぱいです.
Memcached適用シーン
Redisは新興ソリューションであるため、より多くの機能特性を提供し、MemcachedよりもRedisは一般的により良い選択である.2つの特定のシーンでMemcachedはより良い選択かもしれません.
1つ目は、HTMLコードクリップのような微細な静的データです.Memcachedのメモリ管理はRedisほど複雑ではないため、Memcachedのメタデータmetadataが小さく、相対的に余分なオーバーヘッドが少ないため、パフォーマンスが向上します.Memcachedが唯一サポートするデータ型は文字列
String
であり、文字列に追加の処理が必要ないため、読み取り専用データをキャッシュするのに非常に適している.2番目のシーンは、MemcachedがRedisよりも水平に拡張しやすいことです.なぜなら、その設計と機能が簡単で、Memcachedが拡張しやすいからです.ニュースによると、Redisは間もなく3.0版(CAバージョンのリリースノートを読む)に信頼できるクラスタサポートを内蔵する[しかし、ずっとチケットを飛ばしている].
Redisの活躍の場
システムを残すなどの環境制約を受けない限り、またはビジネスが上記の2つの状況に合致しない限り、Redisを優先的に選択する必要があります.Redisをキャッシュとして使用することで,キャッシュ内容を最適化することで,システム効率を極めて向上させることができる.
Redisの利点はキャッシュ管理にあることは明らかです.キャッシュは、あるデータ回収メカニズム(data eviction mechanism)によって必要に応じて古いデータをメモリから削除し、新しいデータにスペースを空ける.Memcachedのデータ回収メカニズムは、LRU(Least Recently Used、最近最も少ない)アルゴリズムを使用し、新しいデータサイズと差の少ない古いデータブロックを優先的にクリアします.対照的に、Redisは、パーティクル制御の期限切れキャッシュを可能にし、6つの異なるポリシーを選択できます.Redisはまた、より複雑なメモリ管理方法と回収ポリシーを採用しています.
Redisは、キャッシュされたオブジェクトに対してより柔軟性を提供します.一方、Memcached制限keyは250バイト、制限valueは1 MBであり、純テキストStringのみで通信可能である.Redisのkeyとvalueのサイズ制限はいずれも512 MBであり、バイナリセキュリティの【すなわち、符号化に関係なくデータを失わない】である.Redisは6種類のデータ型を提供し、キャッシュおよび管理キャッシュをよりスマートで便利にし、アプリケーション開発者に無限の可能性のある世界を開きました.
オブジェクトをシーケンス化して文字列で格納するよりも、RedisはHashによってオブジェクトのフィールドと値を格納し、単一keyで管理できます.
Memcachedでオブジェクトを更新するには、次の手順に従います.
文字列全体の取得オブジェクトに逆シーケンス化する値を変更
オブジェクトを再度シーケンス化するキャッシュで文字列全体を新しい文字列に置換するそして更新するたびにこんなひどいことをします.
一方,Redis Hash方式を用いることで,資源消費を大幅に低減し,性能を向上させることができる.ListやSetのようなRedisの他のデータ型は、より複雑なキャッシュ管理モードを実現するために使用することができる.
Redisのもう一つの大きな利点は、格納されているデータが不透明であることであり、サーバ側でこれらのデータを直接操作できることを意味する.160以上のコマンドの大部分がデータ操作に利用できるため、サービス側スクリプト呼び出しによるデータ処理が現実となっている.これらの組み込みコマンドとユーザー・スクリプトを使用すると、ネットワークを介して別のシステムにデータを転送することなく、データ・タスクを直接柔軟に処理できます.
Redisは、クラッシュ/再起動後にキャッシュを迅速にロードできるようにするために、オプション/調整可能なデータ永続化を提供します.キャッシュ内のデータは不安定で瞬時であると考えられていますが、キャッシュシステムでデータをディスクに永続化することは価値があります.再起動後すぐにウォームアップをロードする方法は、時間が短く、プライマリ・データベース・システムのオーバーヘッドが軽減されます.
最後に、Redisは主従レプリケーションを提供する.Replicationは、高可用性のcacheシステムを実現するために使用することができ、一部のサーバがダウンタイムした場合でも、絶え間ないサービスを提供することができる.キャッシュ・サーバがクラッシュした場合、一部のユーザーとプログラムだけが短時間で影響を受けると仮定すると、ほとんどの場合、キャッシュ・コンテンツとサービスの可用性を保証するために有効なソリューションが必要です.
現在、オープンソースソフトウェアは、最適な実用技術案を提供しています.キャッシュを使用してアプリケーションシステムのパフォーマンスを向上させる必要がある場合、RedisとMemcachedは最適な製品レベルのソリューションです.しかし、その豊富な機能と先進的な設計を考慮すると、ほとんどの場合、Redisはあなたの最初の選択であるべきです.
著者紹介:Itamar Haber(@itamarhaber)は、開発者に完全に管理されているMemcachedとRedisクラウドサービスを提供するRedis Labsのチーフ開発者です.長年のソフトウェア製品の研究開発経験を持ち、Xeround、Etagon、Amicada、and M.N.S Ltd.で管理と指導職を務めたことがある.ItamarはNorthwestern and Tel-Aviv UniversitiesdのKellogg-Recanti工商管理修士、およびScience in Computer Science学士を取得した.
関連情報:
MemcachedでJava企業の応用性能を向上させ、Part 1:アーキテクチャと配置MemcachedでJava企業の応用性能を向上させ、Part 2:データベースベースのwebApp Cacheの争い:AzureとAWSアップグレードキャッシュサービス原文リンク:Why Redis beats Memcached for caching
原文日付:2014-10-15
翻訳日:2014-10-23
アンカー