Memcachedに接触する
3803 ワード
Memcachedトップページ:http://www.memcached.org/ 現在(2014-09-13)の最新バージョンは、v 1.4.20 Memcachedが専門的なDockmentナビゲーションを提供していません.一部の文書はWIKIページに置いています.アクセスはあまりスムーズではありません.学習時にはページを開いてから、ページをローカルに保存するように提案します.
Memcachedはメモリレベルでキーペア(文字列、オブジェクト)を記憶しています.一般的にはデータベース呼び出し、API呼び出し、ページレンダリングに必要な小さいサイズのデータを記憶するために使われます.
Memcachedは簡単ですが、とても強いです.簡単な設計で配置が速くなり、開発が簡単になり、大きなデータがたくさんキャッシュされた時の問題が解決されました.現在流行している言語はすべてAPIを使ってキャッシュ操作ができます.
どのようなデータをMemcachedに入れますか? 1.検索に時間がかかります.データ量がとても大きいです. 2.検索は時間が短いですが、頻繁に検索するデータが必要です.例えば、100 per 1 second
インストール 1.ソースからのインストール(gcc、libEventが必要) Ubuntu: ap-get install libeven-dev Redhat/Fedora/CentOs: yum install libeven-devel wget memcachedの最新バージョンのダウンロードアドレス ./configre--prefix=インストールアドレス メーク make install 2.構築パッケージからのインストール(推奨、自動的に依存を解決します.もしあなたがプラットフォームから提供されたMemcachedのバージョンが低すぎて、あなたの要求に合わないなら、ソースのインストールしかできません.) Ubuntu: ap-get install memcached Redhat/Fedora/CentOs: yum install memcached インストール後 存在するコマンド: memcached memcached-tool 設定ファイル: /etc/syssconfig/memcached 起動: 一般的にサーバーが別のマシンで実行します. memcached-p 11211 開発やテストの際には、1台のマシンで複数のインスタンスを実行することもできます.ポート番号を変更することで実現します. memcached-p 11211 memcached-p 11212 3つの接続方式をサポートし、1024つのクライアント接続、64 mのキャッシュサイズをサポートします. TCP UDP UnixSocks Memcachedのデフォルトの設定を表示します. echo「stats settings」nc local host 11211
ハードウェアの需要
CPU Memcachedのcpuに対する需要は非常に軽いです.どのGヘルツクラスのcpuも要求を満たすRAMです. 1.多ければ多いほどいいです 2.分散型環境の各Memcachedサーバに割り当てられたメモリは最高同じ大きさで、各Memcachedサーバはクラスタ環境での地位は平等であるべきです.これはMemcachedサーバを追加または削除する際に、現在のMemcachedとは異なる重要性を考慮する必要がありません. 3.Memcachedは他のサービスのメモリを使わないほうがいいです.独立したマシンやメモリがないマシンで行ったほうがいいです. 4.Memcachedサーバで1 Gのデータをキャッシュしたい場合、1.2 G以上のメモリを割り当てたほうがいいです.キャッシュされたデータのサイズが割り当てられたメモリを超えたらメモリ交換ができます.メモリのインタラクションがあると、Memcachedのサービス性能が大幅に低下します. 5.メモリサイズは厳しいですが、メモリからのアクセス速度には特に要求がありません.普通のメモリでもNETWORKはMemcachedに記憶されている項目の平均サイズによって、ネットワーク帯域幅の需要には大きな違いがあります.したがって、アプリケーションは、格納されたエントリのサイズを現在のネットワーク帯域幅に合わせて、Memcachedから毎秒取得したデータがネットワーク帯域幅を超えないように保証する責任があります.
クラスタ内のMemcachedサーバのパラメータ配置は同じにしたほうがいいです.もし違ったら、Memcachedサーバごとの重みWeightを情報で測定しなければなりません.これは通常は必要ないです.あなたが思いつかない問題も出やすいです.
Memcachedを展開するシーン 1.独立したサーバに配備する(お金が足りないなら、64 GのMemcachedサーバーを作ってもいいです.クラスタに報告する必要はあまりないです.1台で十分です.(これは冗談です.もしマシンがなくなったら、データが多くなります.アプリケーションの圧力が急に高くなり、非常に悪い連鎖反応があります.)したがって、分散は性能問題だけでなく、システムの信頼性を向上させることができます.独立したサーバに配置するとメモリが増加しやすくなります. 2.Webサーバ上に展開する(Webサーバ上に残っているメモリを合理的に利用するが、Webサーバのメモリが急激に激増し、Webサーバのメモリがオーバーフローする恐れがあり、Memcachedに割り当てられたメモリをメッセージ評価が必要である.メモリを追加するには面倒である) 3.データベースサーバに配置する(良い注意ではなく、元々はデータベースのデータをキャッシュするために使用されています.結果はデータベースとメモリを奪い取ります.)ですので、より良い配置は:複数の独立した低配合のキャッシュサーバを配置するが、少数の高価な高配合のサーバMemcachedの一部の最適化戦略ではなく、メモリに余裕があるキャッシュサーバです. 1.一貫したhashアルゴリズムを維持する 2.サーバの構成が一致していることを維持する 3.サーバごとの重みが同じであることを保証する. 4.メモリに圧縮したデータ(Memcachedの単一の項目に入れると最大で1 Mを超えてはいけない;1 M以下であれば大きいMemcachedメモリ管理時に発生するメモリの破片が多いほど、メモリの利用率が低いので、通常は64 KBを超えないでください) 5.Memcachedが到達しないとキャッシュデータが取得できなくなります.Failoverポリシーではなく、Failureポリシーを採用します. 6.効果的な評価と各Memcachedのインスタンスによって受け入れられる接続数の管理
Memcachedはメモリレベルでキーペア(文字列、オブジェクト)を記憶しています.一般的にはデータベース呼び出し、API呼び出し、ページレンダリングに必要な小さいサイズのデータを記憶するために使われます.
Memcachedは簡単ですが、とても強いです.簡単な設計で配置が速くなり、開発が簡単になり、大きなデータがたくさんキャッシュされた時の問題が解決されました.現在流行している言語はすべてAPIを使ってキャッシュ操作ができます.
//
public void get_apple(Sting apple_id)
{
Apple apple = (Apple)MemcachedUtil.get(apple_id);
if(apple != null)return apple;
apple = (Apple)DataBaseUtil.query(apple_id)
MemcachedUtil.set(apple.getIdApple(), apple);
return apple;
}
主にサポートされているクライアント言語は、c/c+、java、php、perl、ruby、python、netのうち、java下のクライアントがあります. 1.spymemcached 2.Java memcached client (全面的に比較したことがないので、これを選んで勉強します) 3.http://code.google.com/p/javamemcachedclient 4.http://code.google.com/p/memcache-client-forjava 5.http://code.google.com/p/xmemcached Springと一体化:simple-spring-memcachedとSession統合:memcached-session-managerどのようなデータをMemcachedに入れますか? 1.検索に時間がかかります.データ量がとても大きいです. 2.検索は時間が短いですが、頻繁に検索するデータが必要です.例えば、100 per 1 second
インストール 1.ソースからのインストール(gcc、libEventが必要)
ハードウェアの需要
CPU Memcachedのcpuに対する需要は非常に軽いです.どのGヘルツクラスのcpuも要求を満たすRAMです. 1.多ければ多いほどいいです 2.分散型環境の各Memcachedサーバに割り当てられたメモリは最高同じ大きさで、各Memcachedサーバはクラスタ環境での地位は平等であるべきです.これはMemcachedサーバを追加または削除する際に、現在のMemcachedとは異なる重要性を考慮する必要がありません. 3.Memcachedは他のサービスのメモリを使わないほうがいいです.独立したマシンやメモリがないマシンで行ったほうがいいです. 4.Memcachedサーバで1 Gのデータをキャッシュしたい場合、1.2 G以上のメモリを割り当てたほうがいいです.キャッシュされたデータのサイズが割り当てられたメモリを超えたらメモリ交換ができます.メモリのインタラクションがあると、Memcachedのサービス性能が大幅に低下します. 5.メモリサイズは厳しいですが、メモリからのアクセス速度には特に要求がありません.普通のメモリでもNETWORKはMemcachedに記憶されている項目の平均サイズによって、ネットワーク帯域幅の需要には大きな違いがあります.したがって、アプリケーションは、格納されたエントリのサイズを現在のネットワーク帯域幅に合わせて、Memcachedから毎秒取得したデータがネットワーク帯域幅を超えないように保証する責任があります.
クラスタ内のMemcachedサーバのパラメータ配置は同じにしたほうがいいです.もし違ったら、Memcachedサーバごとの重みWeightを情報で測定しなければなりません.これは通常は必要ないです.あなたが思いつかない問題も出やすいです.
Memcachedを展開するシーン 1.独立したサーバに配備する(お金が足りないなら、64 GのMemcachedサーバーを作ってもいいです.クラスタに報告する必要はあまりないです.1台で十分です.(これは冗談です.もしマシンがなくなったら、データが多くなります.アプリケーションの圧力が急に高くなり、非常に悪い連鎖反応があります.)したがって、分散は性能問題だけでなく、システムの信頼性を向上させることができます.独立したサーバに配置するとメモリが増加しやすくなります. 2.Webサーバ上に展開する(Webサーバ上に残っているメモリを合理的に利用するが、Webサーバのメモリが急激に激増し、Webサーバのメモリがオーバーフローする恐れがあり、Memcachedに割り当てられたメモリをメッセージ評価が必要である.メモリを追加するには面倒である) 3.データベースサーバに配置する(良い注意ではなく、元々はデータベースのデータをキャッシュするために使用されています.結果はデータベースとメモリを奪い取ります.)ですので、より良い配置は:複数の独立した低配合のキャッシュサーバを配置するが、少数の高価な高配合のサーバMemcachedの一部の最適化戦略ではなく、メモリに余裕があるキャッシュサーバです. 1.一貫したhashアルゴリズムを維持する 2.サーバの構成が一致していることを維持する 3.サーバごとの重みが同じであることを保証する. 4.メモリに圧縮したデータ(Memcachedの単一の項目に入れると最大で1 Mを超えてはいけない;1 M以下であれば大きいMemcachedメモリ管理時に発生するメモリの破片が多いほど、メモリの利用率が低いので、通常は64 KBを超えないでください) 5.Memcachedが到達しないとキャッシュデータが取得できなくなります.Failoverポリシーではなく、Failureポリシーを採用します. 6.効果的な評価と各Memcachedのインスタンスによって受け入れられる接続数の管理