验证用户信息时,先查找用户信息,如果没有则创建一条消息,在并发的时候,会发现,出现两条相同的用户信息。
目前我的解决方案是:建索引,将第二次插入报错屏蔽。
我想问的是,有没有技术能更好的解决这类并发问题
验证用户信息时,先查找用户信息,如果没有则创建一条消息,在并发的时候,会发现,出现两条相同的用户信息。
目前我的解决方案是:建索引,将第二次插入报错屏蔽。
我想问的是,有没有技术能更好的解决这类并发问题
4 回答1.2k 阅读✓ 已解决
8 回答1.2k 阅读
3 回答1k 阅读✓ 已解决
2 回答1.7k 阅读
1 回答845 阅读✓ 已解决
2 回答1.2k 阅读
2 回答1k 阅读
// Case 1. 该条消息有且仅有一条创建的业务逻辑
该种情况下只需将该段代码同步或加锁,即可避免在高并发下发生脏读的问题。
// Case 2. 该条消息有多处创建的业务逻辑
建议将 查询-创建 操作原子化,通过为user加一个Unique字段即可实现。
======== 2016-02-22 更新 ========
建议新建一个账户锁类,然后使用它来锁定。代码如下:
具体业务逻辑下: