DBにクエリを実行してユーザーにデータを返すJava Webservceがあります。 DBクエリは高価ですので、memcachedに現在のデータをキャッシュするたびに60秒ごとに実行されるCronジョブがあります。 データ要素は、「現在のデータの取得」要求によって返されないことを意味する時間の後に「閉じる」。したがって、これらの要求はキャッシュされたデータを利用できます。任意の時間差(Java Webサービス)のデータに差分をキャッシュするには
クライアントは特定のタイムスタンプ(最後のリクエストのタイムスタンプ)以降に変更されたすべてのデータを取得するために 'since'という機能を使用します。タイムスタンプ以降にデータが閉じられた場合、これは閉じられたデータを返します。
diffs/sinceデータを効果的に保存するにはどうすればよいですか?リクエスト以降のすべてのDBへのアクセスは遅すぎます(拡張がうまくいかないかもしれません)。しかし、クライアントは時間の経過とともにリクエストする可能性があるため、万能キャッシュを生成することが難しくなります。
私はcronジョブを持っているので、キャッシュを構築しようとしました。最後の更新以来変更されたすべてのものを要求した後、クライアントがcronジョブの要求と一致するタイムスタンプを要求するように強制しようとしました。しかし、cronがどれくらいの時間をかけてクライアントとコーンの仕事のどちらも正確に60秒ごとに実行されるという不一致があるので、小さな相違が加わります。この結果、最終的にはデータが閉じてしまいますが、キャッシュまたはクライアントがデータを失います。
私はこれを解決するために何を検索するかについてもわかりません。
私は最近、Ehcacheが優れた検索可能な機能を持っていることを発見したので、DBのようなキャッシュソートを使用して、必要なレコードを見つけることができます。さらに、各レコードにタイムスタンプを付けるので、「それ以降」のレコードを検索することができます。あなたの考えはあまりにもうまくいくと思います。しかし、答えは間違いなくEhcacheです! – dontocsata