Hazelcast 3.7.4を使用していますが、ライトメンバーと非ライトメンバーの両方があります。Hazelcastニアキャッチエビクションが動作しません
次のように私は近くのキャッシュ設定てる私liteのメンバーで:
NearCacheConfig nearCacheConfig = new NearCacheConfig(0, cacheSize, EvictionPolicy.LRU.name(), 0, true, InMemoryFormat.OBJECT);
config.getMapConfig(mapName).setNearCacheConfig(nearCacheConfig);
を私はliteの部材にエントリーリスナーを設定しているし、それは変化に呼び出されたことを確認できました。さらに、古い値と新しい値の内容は正しいです。
しかし、マップから値を取得しようとしても、私はまだ古い値を得ています。
デバッグ中にマップの内容を調べようとしましたが、新しい値が表示されていましたが、私が呼び出しているときに:map.get(key)
古い値が返されます。明らかにバグです
IMapとそれに近いキャッシュは分離された追い出しメカニズムを持っています。エントリが「IMap」から追い出されるとき、これはニア・キャッシュ上での追い出しを必要とせず、逆もまた同様である。したがって、それがまだそれを所有しているため、キャッシュの近くで追い出されたエントリが返されることが予想されます。追い出しはデータの正確さに影響しないので、最新の状態がまだ観察可能であれば、それをニア・キャッシュから戻しても 'IMap'はそれを持っていなくても問題はありません。 – mrck
キー 'a'が '1'の値にマップされていたが、 '2'に変更されたとしたら、 'a'のマップを照会しているときに '1' '? 私はここでの退去については言及していませんが、価値のある更新です。 さらに、near-cacheコンストラクタの1つは '' invalidateOnChange''です。これは自分のコードで '' true''に設定されています。 – danieln
あなたは完全な例を共有できますか?ありがとうございました –