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

输入图片说明

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

mongodb的锁:

输入图片说明

回复

简单方法:使用redis做 更复杂的可以采用发号器,比如推特的snowflake

选用redis处理的好处

  • redis的incr是有锁的,所以一定会是不同的。
  • redis是内存数据库,速度非常快,支持集群,可抗压
  • 取到maxId之后,异步丢出去该更新就更新,依赖非常少

这个方案的缺点也是非常明显的,redis的运维是个头疼的事儿,一旦宕机,如何处理,可以参考微博相关redis技术文档。

科普

  • 原子性(atomicity):一个事务是一个不可分割的最小工作单位,事务中包括的诸操作要么都做,要么都不做。
  • Redis所有单个命令的执行都是原子性的,这与它的单线程机制有关;
  • Redis命令的原子性使得我们不用考虑并发问题,可以方便的利用原子性自增操作INCR实现简单计数器功能;

转载于:https://my.oschina.net/nodeonly/blog/703022

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值