2012-04-06 12 views
-1

と私はJavaランタイムとAppEngineの上で客観使用しています。私はまた、いくつかのエンティティの@Cachedアノテーションを介してmemcacheを使用しています。私の質問は、オブジェクトをデータストアに配置するときのオブジェクト化の動作に関するものです。 @Cachedアノテーションを持つエンティティを置くとき、memcacheは更新されますか?または、そのエンティティの既存のキャッシュされたデータがデータストアと同期しなくなりました。オブジェクトをデータストアに置いたときにmemcacheを更新したいと思いますが、objectifyがデフォルトでこれを行うかどうか、またはこれを自分で記述する必要があるかどうかはわかりません。 memcacheが更新された場合、私のデータの有効期限(または期限切れ)をはるかに高くすることができます。私はトランザクションを使用していません。AppEngineのmemcacheの有効期限客観

答えて

6

あなたが@Cachedを使用する場合、客観近トランザクション安全な方法であなたのためのmemcacheにすべての更新を処理します。これは競合の下で崩壊することはありませんが、例えば、DeadlineExceededExceptionまたはOutOfMemoryExceptionを突き、GoogleがVMを終了させるなど、同期が外れることがあるまれな状況があるため、「ほぼトランザクション」です。

長い有効期限は、キャッシュされたデータのほとんどの種類のための合理的です。客観化を使用して

+1

迅速な対応をありがとう!それは私が望んでいた答えでした。私はあなたが客観化された人だと信じています。あなたの仕事をありがとう、それはデータストアをより扱いやすくします! – Patrick

+0

この質問は、データストアへの直接アクセス、オブジェクト化bypasingについてですか?これは、memcacheの更新がデータストアのコールバックで処理されることを意味しています。私はあなたが本当にここであなたを理解するかどうかはわかりません: – honzajde

0

、Memcacheの中にあなたのデータは、(一部の古いバージョンでは、そのような本当に不運期限として例外的な状況、中を除く)データストアと同期しになることはありません。

I Objectifyは、このビットについてはわかりませんが、Memcacheのバージョンを無効にするだけです(次の「取得」がデータストアに移動してMemcacheに書き込まれます)。いずれにせよ、Objectifyはあなたのためにそれを並べ替えます。