こんにちは。平井です。
社員を飲みに誘って先に酔っ払うのが最近の醍醐味です。
最近は話題になることも多いKVSですが、
村式でもMemcachedをキャッシュ層に取り入れたりして、アプリケーションの処理能力を向上させたりしています。
Webアプリケーションに構築する上でキャッシュはとても有用ですが、
「ちゃんと消す」ということを意識して実装しないと、更新された情報が正しく表示されないといった状態に陥りがちです。
Perlの世界では、Memcachedに保存するデータをグルーピングして管理できるCache::Memcached::Managedというライブラリが開発されてます。実際にいじったことはないですが、キャッシュの保存/削除に非常に有用なのではないでしょうか。
このようなライブラリがPHPにもあったらなーと思って少し探してみたのですが、見つけることができなかったので実装してみることにしました。
MemcacheTagging
以下のような感じで使用します。
require dirname(dirname(__FILE__)) . '/path/to/MemcacheTagging.class.php';
// create a instance.
$cache = MemcacheTagging::getInstance();
// set a value with tags.
$cache->set('key', 'value', array('tag_foo', 'tag_bar'));
// retrieve with a tag.
$values = $cache->getByTag('tag_foo');
// delete with a tag.
$cache->deleteByTag('tag_foo');
実装している主な機能としては、
- キャッシュするデータにタグをつけられる
- キャッシュされているデータをタグで取り出せる
- キャッシュされているデータをタグで削除できる
などです。
- テストがまだ適当
- アトミックな実装になってない
など、まだまだ心配な面がありますので、社内の開発の中で検証を重ねて改良して行きたいと思っています。
Own Riskな上で試してくださる豪気な方大歓迎です!
何かありましたら twitterに投げて頂くのが反応早いと思います。
それでは!