Cache.getOrElse(java.lang.String key, java.util.concurrent.Callable block, int expire) の使い方 誰か例を教えてくれませんか? ポイントは「有効期限」の使い方です。
ところで、いくつかのオブジェクトをキャッシュに保存し、有効期限を設定したいと思います。有効期限が切れたら、オブジェクトをキャッシュにリセットできます。
ありがとう。
Cache.getOrElse(java.lang.String key, java.util.concurrent.Callable block, int expire) の使い方 誰か例を教えてくれませんか? ポイントは「有効期限」の使い方です。
ところで、いくつかのオブジェクトをキャッシュに保存し、有効期限を設定したいと思います。有効期限が切れたら、オブジェクトをキャッシュにリセットできます。
ありがとう。
asおよびasUser
を設定するために、オブジェクトをキャッシュに設定するとします。有効期限を設定する必要がある場合は、サンプルの場合は 30 秒に設定します。userId
key
user object
value
cache.set(userId, userObject, 30);
ある時点で、以前に userId をキーとして設定したキャッシュからユーザー オブジェクトを取得する場合は、次の方法を試してキャッシュからユーザー オブジェクトを取得します。
User user = cache.get(userId);
上記は、30 秒以内にアクセスした場合はユーザー オブジェクトを返し、それ以外の場合は を返しNULL
ます。これは、セッションの検証などの場合に最適です。場合によっては、キャッシュから頻繁に値を取得する必要があります。その場合は、次の方法が最適な方法です。
User user = cache.getOrElse(userId, () -> User.get(userId), 30);
表示する動的コンテンツと静的コンテンツがある場合は、コントローラーで getOrElse を使用します。静的部分をキャッシュしてから、動的部分と一緒にレンダリングします。
try {
Html staticHtml = Cache.getOrElse("static-content", () -> staticView.render(), 60 * 60);
Html rendered = dynamicPage.render(arg1, arg2, staticHtml);
return ok(rendered);
} catch (Exception e) {
e.printStackTrace();
return internalServerError();
}
staticView.render()
ビューからいくつかの html を返します。このビューは、動的な他のページを呼び出したり、実際には隠したくないものを隠したりしないでください。
60*60
1時間保存したいという意味です(60秒×60分...必要に応じて記述3600
できます)
指定されたキー (この例ではキーは ) でキャッシュからgetOrElse
取得することを追加する必要がありますが、それが見つからない場合は、オブジェクトを返す関数を呼び出し、指定された時間だけキャッシュに格納されます。その鍵で。かなりきれい。Object
static-content
次に、他の (動的) ページを呼び出して、html を渡すことができます。
動的なものは動的のままです:)
有効期限は、オブジェクトがキャッシュに保持される秒数です。有効期限として 0 を渡すと、キャッシュは期限切れにならず、手動で制御する必要があります。
getOrElse が行うことは、キャッシュをチェックすることです。オブジェクトがそこにない場合は、渡している呼び出し可能なブロックを呼び出し、有効期限として渡している秒数だけ結果をキャッシュに追加します。
私のコメントはPlay Framework Cache Javadocに基づいています。