memcached


wikipedia - memcached



汎用の分散型メモリキャッシュシステム。
...
YouTube [2] やLiveJournalSlashdotWikipedia
SourceForge、GameFAQs、FacebookDiggFotolog
BoardGameGeek、DeviantART、Kayak などの大規模な
有名サイトで使用されている。

とのこと。


DBMによるデータベースサーバ

には


memcachedは複数のサーバのメモリ空間を仮想的な単一
のハッシュテーブルとして利用するためのソフトウェア
です。memcachedプロトコルを喋るライブラリは
主要な言語のほとんどで整備されているので、
クライアントのポータビリティはHTTP並に高いと
言えるでしょう。しかもクライアントライブラリの
実装によってはConsistent Hashing等の賢い
アルゴリズムも選択できるので、分散ストレージ
としても使えるようになります。

と説明されている。


最近のmemcached界隈の賑わいについてのメモ

memcached関連のあのプロダクトやこのプロダクトのまとめ。

マイコミジャーナル -
memcached client for java - Javaでmemcachedを使おう


memcachedJava クライアントの紹介。


memcached互換のキャッシュサーバとして、データを
ディスクに永続化する機能を備えたmemcachedbや、
レプリケーション機能を備えたrepcachedがある。

その他、見つけたサイト・・・

memcached を知り尽くす


InfoQ - JGroupsのmemcached実装

冗長性の無い分散メモリキャッシュのJava実装。
JBossCache に将来組み込み予定とのこと。


各APサーバのJVM内にキャッシュを持って、
そのキャッシュ同士が基本独立して動いてるんだけど、
自キャッシュ内にデータが無かった時は、
他のJVM内のキャッシュも見に行って、
それを自キャッシュ内にも短期間キャッシュする。

例を挙げると、
APサーバAとAPサーバBがあったとして、AとBそれぞれ
別々のキャッシュが蓄積されている。A にて、Aが
保持していない情報に対するリクエストがあった場合、
AはBにキャッシュがあるかどうか問い合わせ、
あった場合、Bからそれを取得し、一時キャッシュとして
Aの中にも保持しておく。

こういう風にすることで、使用頻度の高い情報に
ついてはいちいち通信が発生することなく
キャッシュが返却できる。冗長度が基本的に0で、
一時キャッシュ分だけが冗長データとなるので、
APサーバ数が増加してもメモリを圧迫しない。

一方、APサーバがダウンすると、そのAPサーバが
保持していた情報は失われるという問題はある。
(失われても問題ない場合に使う必要あり)

特徴的な部分はこんな感じだと思うけど、
他にも結構おりこうさんな機能がある。
使い方も単純そうなんで、印象は良い。

TODOとして上がっている中に、

・キャッシュにあるデータの数でなくバイト数によってキャッシュ解放をおこなう

というのが上がっている。これはいいね。
結局キャッシュの上限の根拠になるのはバイト数であって、
データの数じゃないし。