いつでも「生きている」キーの数を取得したい。APIドキュメントによると、 getItemCount() はこれを返すことを意図しています。
しかし、そうではありません。期限切れのキーは、getItemCount() の値を減らしません。どうしてこれなの?有効期限が切れていないすべての「アクティブ」または「アライブ」キーの数を正確に取得するにはどうすればよいですか?
これが私のプットコードです。syncCache.put(uid, cachedUID, Expiration.byDeltaSeconds(3), SetPolicy.SET_ALWAYS);
これで、3 秒後にキーが期限切れになります。それらは期限切れになりますが、 getItemCount() はキーの実際の数を反映していません。
更新: memcache は私が使用すべきものではない可能性があるため、ここで私がやろうとしていることは次のとおりです。
デスクトップ アプリケーションの「オンライン ユーザー」機能として機能する google-app エンジン サーバー/アプリを作成したいと考えています。デスクトップ アプリケーションは、パラメーターとして一意の ID を使用してアプリに http 要求を行います。アプリは、この UID をタイムスタンプと共に保存します。これは 3 分ごとに行われます。
5 分ごとに、タイムスタンプがその 5 分間の枠外にあるエントリはすべて削除されます。次に、エントリの数を数えます。それが「オンライン」のユーザー数です。
タイムスタンプや期限切れのエントリのクリアについて心配する必要さえないため、期限切れ機能は完璧に思えました。