2011年7月11日月曜日

GAEでMemcacheを利用する

Datastoreに頻繁にアクセスすると、システムの動作が遅くなったりサーバの負荷がかかってくるようなので、そんな時はMemcacheを用いるとよい。Memcacheは、いわゆるハッシュテーブル(マップ)みたいなもの。キーとバリューの組を格納していくだけ。GAEではデータを共有できるようになっているのが特徴だが、いろいろなシステムで使っているとキーの衝突も起こりうる。そこで、NameSpaceで区別できるようになっている。
//TEST1というネームスペースで設定
MemcacheService memcache = MemcacheServiceFactory.getMemcacheService("TEST1");
memcache.put("name", "おち");
String result = memcache.get("name");
基本はこれだけ。GAEを使っているとCPUの負荷等が気になるが、Memcacheを利用するとその減少に効果があるらしい。Datastoreとの使い分けについては

  • 頻繁にアクセスするデータはDatastoreを何回も見に行くのではなく、Memchacheの値を取り出すようにする
  • Memcacheに値がない場合は、DatastoreにアクセスしMamcacheに保存しておく
というのが無難でしょう。Memcacheはあくまでも一時的なデータ保存領域なので。ただ、この使い分けをどうするかは、設計者の腕の見せどころだと思います。

なお、JCacheというJavaの標準の方も利用できるようです。このあたりの使い分けもちょっと調べてみます。


0 件のコメント:

コメントを投稿