博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在高并发的情况下,Node.js怎么生成像陌陌里面每个用户都有的 数字账号 呢,如何才会不重复呢?...
阅读量:6084 次
发布时间:2019-06-20

本文共 461 字,大约阅读时间需要 1 分钟。

hot3.png

输入图片说明

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

mongodb的锁:

输入图片说明

回复

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

选用redis处理的好处

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

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

科普

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

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

你可能感兴趣的文章
Matplotlib 画廊
查看>>
Node.js 服务器
查看>>
Redis 高级主题之HyperLogLog
查看>>
openstack从入门到放弃
查看>>
HDU 4803 Poor Warehouse Keeper (贪心+避开精度)
查看>>
JVM
查看>>
微服务学习笔记
查看>>
UDP示例
查看>>
数据结构12-AVL树
查看>>
iOS开发之BLE(一)——理论知识
查看>>
Sql 查询锁
查看>>
HTTP Protocol
查看>>
Codeforces 919E - Congruence Equation
查看>>
React Diff 算法
查看>>
返回上一页几种方法
查看>>
WPF 自定义ComboBox样式,自定义多选控件
查看>>
WPF 自定义MenuItem样式
查看>>
Numerical Geometry of Image
查看>>
1107 Social Clusters
查看>>
Python之路【第十八篇】:模块知识
查看>>