[高并发]在高并发的情况下,怎么生成像陌陌里面每个用户都有的 数字账号 呢,如何才会不重复呢? 数据库是mongodb
发布于 6 天前 作者 whw1988 255 次浏览 来自 问答

[高并发]在高并发的情况下,怎么生成像陌陌里面每个用户都有的 数字账号 呢,如何才会不重复呢? 数据库是mongodb

mongodb的锁:

27.pic.jpg

5 回复
  • redis
  • 更复杂的可以采用发号器,比如snowflake

@i5ting redis可以保证 每个用户读到的maxId不一样吗,我是打算用一张表来存maxId,每个用户读到maxId然后加1,更新到用户表的id字段。 现在就是高并发时 好多用户读到的maxId可能会一样(虽然写有锁,可以保证maxId更新是对的,但是读没锁,会导致用户表的id字段有一些会一样)

@whw1988 redis的incr是有锁的,所以一定会是不同的。取到maxId之后,异步丢出去该更新

@i5ting 会不会多个用户一瞬间取到同一个maxId?

@i5ting 明白明白了,谢谢桑大神,是先incr,再取出来

回到顶部