在Hazelcast IMap中,当我删除某个密钥并立即添加具有不同数据的相同密钥,然后在不到一秒钟的时间内获取该数据时,Hazelcast IMap返回旧数据。
例如
1)我要删除一个值为{key : String, value : serialized object}
的键
2)现在,我在不到一秒钟的时间内将同一个键的值添加到值{key : String, value : serialized object}
3)此时,我尝试获取键get{key : String}
,该键返回与第1点相同的值。
为避免此错误(解决方法),我尝试添加Thread.sleep(1000L)。这似乎可行,但不能提供一致性。
还使用了evict,删除IMap的方法。在这种情况下,似乎没有任何作用。
Hazelcast.xml配置是默认配置。 在客户端,hazelcastClient.xml也具有默认配置。
method api()
{
if(userIsAlreadyLogin)
{
forcelogout()
}
handleValidUserlogin()
}
method forcelogout()
{
removeUserDetails()
}
removeUserDetails()
{
IMap.lock()
IMap.delete(key : String, value : serialized object)
IMap.unlock()
}
method handleValidUserlogin()
{
IMap.get() //Printing values after deletion
IMap.put(key : String, value : serialized object)
IMap.get()
}