由于我们的项目具有非常高的从MongoDB读取数据的频率,所以我们决定将一些数据加载到Redis,以减少写/读Mongo的请求。
我们为redis-key存储实体的id,为redis-value存储实体的序列化JSON字符串。存储在Redis中的数据如下:
key : "id_18035138"
value : "{
"id":"...",
...,
"version":1
}在存储这些数据之后,当我们需要更新数据时,我们首先将JSON字符串解析为实体,然后更新属性,然后在Redis中刷新数据。因此,Redis中的数据将是最新的数据。
当我们需要将Redis数据保存到MongoDB时,我们首先将JSON字符串解析为实体,然后使用Morphia来保存实体,但我们面临这样的异常:
java.util.ConcurrentModificationException: Entity of class com.lk.game.entities.User (id='...',version='1') was concurrently updated.我知道这一定是乐观锁的问题。我们如何解决这个并发异常?
谢谢你的回答。
发布于 2015-03-24 22:34:38
我们如何解决这个并发异常?
不同时写..。显然,至少有两个参与者并行地回写同一份文档。
我不认为它是可能知道如何或为什么会发生在您的系统与您所提供的信息。
也许你也可以改变架构?
https://stackoverflow.com/questions/29241721
复制相似问题