Memcacheキャッシュシステム知識ポイント整理
6988 ワード
Memcached概念:Memcachedは無料でオープンソースし、高性能で、分散オブジェクトのキャッシュシステムを持っています。これは頻繁にアクセスする対象またはデータを保存するために使用できます。保存されたデータは巨大なHASHテーブルのようです。この表はKey-valueペアの方式でメモリに存在します。公式サイトのダウンロードアドレス:http://www.memcached.org/実行環境:linux、BSD、windowsはすべて実行可能プロトコル理論:http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt(英語)操作フロー:、クライアントの要求データがmemcachedにあるかどうかを確認し、ある場合は直接要求データを返して、データベースに対していかなる操作も行わない。経路操作は①②③⑦である。2、要求されたデータがmemcachedにない場合は、データベースを調べ、データベースから取得したデータをクライアントに返すとともに、データをmemcachedにキャッシュします。(memcachedクライアントは責任を負わず、手順が明確に実現される必要があります)、経路操作は①②⑤⑥⑥です。3、毎回データベースを更新しながら、memcachedのデータを更新して、整合性を保証する。4、memcachedに割り当てられたメモリの空間がなくなったら、LRU(Least Recently Used)ポリシーを使用して、最近は少なくとも使用しています。有効期限切れのポリシーを加えて、無効データはまず交換されて、最近は使われていないデータを取り換えます。
Memcachedの特徴:プロトコルが簡単である。 テキスト行の契約に基づいています。直接にTenetを通じてmemcachedサーバでアクセスできるデータ操作はlibeventイベントに基づいて処理します。 LibeventはCを利用して開発されたライブラリで、BSDシステムのkqueue、Linuxシステムのepollなどのイベント処理機能を一つのインターフェースにカプセル化し、従来のselectに比べて性能を向上させました。内蔵メモリ管理方式 すべてのデータはメモリに保存されています。アクセスデータはハードディスクよりも速く、メモリがいっぱいになったら、LRUアルゴリズムで自動的に使用しないキャッシュを削除します。しかし、データの災害問題を考慮していません。サービスを再開したら、すべてのデータが失われます。分散式 各memcachedサーバ間では互いに通信せず、それぞれ独立してデータにアクセスし、いかなる情報も共有しない。サーバーは分散機能を持っていません。分散配置はmemcacheクライアントに依存します。
Memcachedのインストールと起動:memcachedをインストールするには、先にlibeventバイトが格納されます。預け入れられた値の長さは必ずこれと一致します。そうでないとセーブできません。liuhouaフィールドは21バイトですから、預け入れられた369369.blog.51 cto.comの長さは21です。はデータ
Memcachedの特徴:プロトコルが簡単である。 テキスト行の契約に基づいています。直接にTenetを通じてmemcachedサーバでアクセスできるデータ操作はlibeventイベントに基づいて処理します。 LibeventはCを利用して開発されたライブラリで、BSDシステムのkqueue、Linuxシステムのepollなどのイベント処理機能を一つのインターフェースにカプセル化し、従来のselectに比べて性能を向上させました。内蔵メモリ管理方式 すべてのデータはメモリに保存されています。アクセスデータはハードディスクよりも速く、メモリがいっぱいになったら、LRUアルゴリズムで自動的に使用しないキャッシュを削除します。しかし、データの災害問題を考慮していません。サービスを再開したら、すべてのデータが失われます。分散式 各memcachedサーバ間では互いに通信せず、それぞれ独立してデータにアクセスし、いかなる情報も共有しない。サーバーは分散機能を持っていません。分散配置はmemcacheクライアントに依存します。
Memcachedのインストールと起動:memcachedをインストールするには、先にlibevent
Shell>tar zxvf libevent-1.4.14b-stable.tar.gz
Shell>cd libevent-1.4.14b-stable
Shell>./configure
Shell>make && make install
をインストールしてmemcached
Shell>tar zxvf memcached-1.2.5.tar.tar
Shell>cd memcached-1.2.5
Shell>./configure Cprefix=/usr/local/memcached
Shell>make && make install
をインストールして、memcached Shell>/usr/local/memcached/bin/memcached Cp 11211 Cd Cu root CP/tmp/memcached
-P TCP, 11211
-d (daemon)
-u root , root
-P pid , “p” “P”
-l, IP , IP , IP
-m , MB , 64M
-c , 1024
-f , 1.25
-M , , LRU
を起動します。解決策は32ビットのディレクトリの中の同名のファイルを64ビットのディレクトリにリンクすることです。つまりwindowsのようにショートカットを作ることです。Shell>/usr/local/libevent-1.4.so.2/usr/lib 64/libevent-1.4.so.2起動後、ポートがないと発見されたら、コマンド時にpidパラメータを持つ「p」が大文字「P」であるため、小文字で書くことができます。コマンドラインを直接操作してコマンドを保存します。六つのコマンドがあります。
Set: memcached
Add: KEY , memcached , , NOT_STORED
Replace: KEY , memcached , NOT_STORED
Cas: KEY ,
Append:
Prepend:
は、2つのコマンド項目があります。
Get: , , KEY ,flag value , , END, KEY , END
Get_multi:
は削除されます。1つのコマンド:Delete
は、まずmemcache shell>telnet 127.0.0.1 11211
に接続して、データSet liuguohua 0 0 21
369369.blog.51cto.com
に入力した後、システムが自動的に保存され、正常値STOREDに戻り、コマンドフォーマットはGet liuguohua
を取って車に戻った後、1行目はVALE liuhao 0 21の2行目に戻り、真の値369369.blog.551 cto.com Memcachedのメモリアルゴリズム:Memcachedはslab allocation機構を利用してメモリを割り当てて管理し、予め定められた大きさに従って、割り当てられたメモリを特定の長さのブロックメモリに分割してメモリを管理する。また同じサイズのメモリブロックをグループに分けて、データを保存する時、キーの大きさによってslabサイズに合わせて、近くのslabを探して保管しますので、空間の浪費現象があります。従来のメモリ管理方式は、Mallocで割り当てられたメモリを使用した後、freeでメモリを回収する方式で、メモリの断片を発生しやすく、オペレーティングシステムのメモリ管理効率を低下させる。 Memcachedのキャッシュポリシー:MemcachedのキャッシュポリシーはLRU(最近は最小使用)であり、有効期限切れポリシーを加える。memcachedにデータ項目を格納すると、キャッシュでの失効時間を指定することができます。デフォルトは永久です。MEmcachedサーバが割り当ての内を使い切ると、無効になったデータが最初に置換され、その後も最近未使用のデータである。LRUでは、memcachedはLazy Expirationポリシーを使用しています。自分は保存されたkey/vlueペアが期限切れであるかどうかを監視しないで、key値を取得した時に記録されたタイムスタンプを確認して、key/valueが空間に期限が切れているかを確認します。Memcachedの分散アルゴリズム:key/valueをmemcachedクラスタに保存/取り出すとき、memcachedクライアントプログラムは一定のアルゴリズムに基づいてどのサーバに預け入れたかを計算してから、key/value値をサーバに保存します。つまり、アクセスデータは2ステップ、1ステップ、サーバを選択し、2ステップ目にデータをアクセスします。分散アルゴリズム(Consent Hashing):サーバを選択するアルゴリズムは2つあり、1つは剰余に基づいて分布を計算すること、もう1つはハッシュアルゴリズムに基づいて分布を計算することである。剰余計算方法:まずキーの整数ハッシュ値を求めてから、サーバ台数を除いて、剰余によってアクセスサーバを決定します。この方法は計算が簡単で効率的ですが、memcachedサーバが増加したり、減少したりすると、ほとんどのキャッシュが無効になります。ハッシュアルゴリズム:まず、memcachedサーバのハッシュ値を算出し、0から2の32乗の円に分布してから、同じ方法でデータを格納するキーのハッシュ値を算出して円にマッピングし、最後にデータがマッピングされた位置から時計回りに検索し、検索された最初のサーバーにデータを保存します。2の32乗を超えると、依然としてサーバが見つからなくなります。最初のmemcachedサーバにデータを保存します。memcachedサーバーを追加した場合、サーバーの反時計回りの最初のサーバのキーだけを円に追加すると影響を受けます。 Memcacheの管理と性能監視:コマンドラインで直接管理しても良いし、監視してもいいです。nagios、cactiなどのウェブソフトで監視コマンド行:
Shell>telnet 127.0.0.1 1211 // IP ,
Stats: memcached
Stats reset:
Stats slabs, slabs ,
Stats items: slab item
Stats cachedump 1 0: slabs KEY
Set|get:
STAT evictions 0: item item
他の常用ソフトウェアで使用されています。この出所を必ず保留してください。http://369369.blog.51cto.com/319630/833234