Java Hazelcast IMap delete、put和get立即为特定键返回旧数据

Java Hazelcast IMap delete、put和get立即为特定键返回旧数据,java,hazelcast,hazelcast-imap,Java,Hazelcast,Hazelcast Imap,在Hazelcast IMap中,当我删除某个键并立即添加具有不同数据的同一个键,然后在不到一秒钟的时间内获得该数据时,Hazelcast IMap将返回旧数据 比如说 1) 我正在删除值为{key:String,value:serialized object} 2) 现在我用value{key:String,value:serialized object} 3) 此时,我尝试获取keyget{key:String},它返回与第1点相同的值 为了避免这个错误(解决方法),我尝试添加Thread.

在Hazelcast IMap中,当我删除某个键并立即添加具有不同数据的同一个键,然后在不到一秒钟的时间内获得该数据时,Hazelcast IMap将返回旧数据

比如说

1) 我正在删除值为
{key:String,value:serialized object}

2) 现在我用value
{key:String,value:serialized object}

3) 此时,我尝试获取key
get{key:String}
,它返回与第1点相同的值

为了避免这个错误(解决方法),我尝试添加Thread.sleep(1000L)。这似乎可行,但无法提供一致性

还为IMap使用了逐出、移除方法。在这种情况下似乎什么都不起作用

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()
}

嗨,我无法复制这个。请提供复制机好吗?我的代码:`IMap map=client.getMap(“默认”);String key=“person”;人员=新人员(“Jiri”,27);地图。放置(钥匙、人);删除(键);人员2=新人员(“Jaromir”,30);地图放置(钥匙,人员2);System.out.println(map.get(key))`您是否已将读取备份数据设置为true?(这不是默认设置)。如果是这样,则从更新条目到写入备份之间会有一个时间窗口,从中读取备份的客户端可能会看到过时的数据。(将读取备份数据设置为true表示您对此没有问题)。@MikeYawn我应该在哪里配置此读取备份数据…客户端或服务器端xml文件?我在服务器端xml文件中找到了备份计数…这与您建议的相同吗?读取备份数据将在服务器端配置为映射配置中的一个元素(以及备份计数和异步备份计数)。我在没有注意到您明确表示在客户端和服务器端有默认配置的情况下发布了该评论。。。如果您使用的是默认设置,那么这并不能解释您的问题,我正在尝试考虑另一个可能适合的场景。如果您可以创建一小段示例代码来演示问题,这可能是我们能够诊断的唯一方法,因为仅根据问题描述,@jholusa似乎无法重现。您好,我无法复制这个。请提供复制机好吗?我的代码:`IMap map=client.getMap(“默认”);String key=“person”;人员=新人员(“Jiri”,27);地图。放置(钥匙、人);删除(键);人员2=新人员(“Jaromir”,30);地图放置(钥匙,人员2);System.out.println(map.get(key))`您是否已将读取备份数据设置为true?(这不是默认设置)。如果是这样,则从更新条目到写入备份之间会有一个时间窗口,从中读取备份的客户端可能会看到过时的数据。(将读取备份数据设置为true表示您对此没有问题)。@MikeYawn我应该在哪里配置此读取备份数据…客户端或服务器端xml文件?我在服务器端xml文件中找到了备份计数…这与您建议的相同吗?读取备份数据将在服务器端配置为映射配置中的一个元素(以及备份计数和异步备份计数)。我在没有注意到您明确表示在客户端和服务器端有默认配置的情况下发布了该评论。。。如果您使用默认设置,那么这并不能解释您的问题,我正在尝试考虑另一个可能适合的场景。如果您可以创建一小段示例代码来演示问题,这可能是我们能够诊断的唯一方法,因为@jholusa似乎无法仅根据问题描述重现。