キャッシュ(MemcacheService) | sola's note

sola's note

日ごろのメモを書いていきます。何か新しいものを作るために。

以前の
Google App Engineのセッションスコープ
の続き

といってもまとめに過ぎないのだけれど。

GAE/Jにはデータストアより簡単にデータを出し入れできるものがある。
タイトルにも挙げている通り、
MemcacheServiceというもので、
キャッシュの役割をする。
ただし、サーバ側がベース。

要点的には
・異なるインスタンスのデータは共有される
・有効期限が指定通りにならない場合がある

くらいか。

まず
・異なるインスタンスのデータは共有される

これはクライアントの状態がどうこうとかは関係なく、
複数個所で

MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService();

の処理により、memcacheのインスタンスを生成すると、
インスタンスが異なってもインスタンスが保持する情報は共有され、同じものとなる。

スコープがセッションと違うのでこの点だけは特に注意
セッションと同じ感覚で使用すると、ユーザ同士の情報が混ざったりする。

主に共用性の高いデータに向いている。

次に
・有効期限が指定通りにならない場合がある

memcacheはメモリの容量が大きくなってくると、
自動的に制御を行う事があるそうで、
put時等に有効期限を設定できるものの、
予定通りに動作しない場合があるそう。

参考までに、有効期限は↓のように設定するみたい。

hoge = "hoge";
memcacheService.put("hoge",hoge,Expiration.onDate(new Date()));

※引数の三つ目はExpiration型を入れるみたいですが、
やったことないので詳しくはここ を参考に。

セッションとの使い分けが必要だね。