关于并发插入数据唯一性的问题
发布于 8 年前 作者 bugall 4470 次浏览 来自 问答

现在有个同意用户申请加队的操作,每个用户只能存在与一个队伍,在用户加入队伍的时候会判断用户是否已经有队伍信息,如果有就不能再次加队。用户A可以同时发送多个申请加入队伍的请求,例如发给队伍:T1,T2,T3. 有可能T1,T2,T3同时同意了同一个用户的请求,虽然这个操作是事务的但是还是会出现这个用户同时加入了T1,T2,T3的情况。因为他们同时判断用户有没有队伍信息,结果发现都没有所以都插入(从性能角度出发不考虑多列字段的唯一键约束,表级锁)。 如果用了消息队列话可以解决这个问题,但是同时有个问题是怎么保证T1用户点击“同意”后及时告诉用户是否成功(我理解的是接入端只是把请求放到消息队列里让消费端处理,这时消费端处理完请求后生产端是得不到通知的) 还有一个问题,如果像这类的处理以每秒10个数量插入到队列里但是消费断每秒只能处理5个。这种情况怎么办?

我更更想知道的是 用消息队列后产生的两个问题。1.用户的及时相应 2.生产大于消费的队列

6 回复

这个问题在之前社区里面看到过,i5ting老师做了精彩的解答。

使用redis来解决key唯一性问题,具体的方法您搜索下

@richenlin 我更更想知道的是 用消息队列后产生的两个问题。1.用户的即使相应 2.生产大于消费的队列

我现在遇到一种问题就是生产者将数据push到redis的list中,消费者去pop,还利用了redis的订阅通知消费者

回到顶部