一度に JVM の 1 つのインスタンスのみがメモリ キャッシュ キー インスタンスを変更し、書き込み中に読み取りが行われないようにするにはどうすればよいでしょうか? 低レベルのストアまたは JSR ラッパーのいずれかを使用できます。
List<Foo> foos = cache.get("foos");
foos.add(new Foo());
cache.put("foos", foos);
同時書き込みなどから保護する方法はありますか?
ありがとう
一度に JVM の 1 つのインスタンスのみがメモリ キャッシュ キー インスタンスを変更し、書き込み中に読み取りが行われないようにするにはどうすればよいでしょうか? 低レベルのストアまたは JSR ラッパーのいずれかを使用できます。
List<Foo> foos = cache.get("foos");
foos.add(new Foo());
cache.put("foos", foos);
同時書き込みなどから保護する方法はありますか?
ありがとう
Fh。ほぼ正しい方向に進んでいますが、完全ではありません。MemCache がアトミックに動作すると彼が言っているのは正しいですが、これによって「同期」を処理する必要がなくなります。JVM の実行例が多数あるため、マルチスレッド環境を考えるときに通常理解していることに関して、実際の同期について語ることはできません。1 つまたは複数のインスタンス間で MemCache アクセスを「同期」するソリューションは次のとおりです。
メソッドを使用して、オブジェクト インスタンスMemcacheService.getIdentifiable(Object key)
を取得します。Identifiable
後で MemCache に戻すことができます。MemcacheService.putIfUntouched(...)
MemCache APIで API を確認してください: getIdentifiable()。オブジェクトは、キーを介してフェッチしたIdentifiable
オブジェクトを含むラッパーです。
仕組みは次のとおりです。
putIfUntouched(...)
は成功し、putIfUntouched
を返しtrue
ます。putIfUntouched
返されfalse
ます。並列操作で同じキーに書き込みを行っているときに、キーを読み取ることで memcache が破損することを心配していますか? これについて心配する必要はありません。memcache サーバーでは、両方の操作がアトミックに実行されます。
Memcache が「破損した」結果を出力することはなく、書き込み中に破損の問題が発生することもありません。