84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我现在用nodejs做了一个活动网站 每日访问量大概10w
入库的时候手机号会有重复的出现,在同一时间内插入的,虽然很少 但是还是有.
我已经在入库前进行各种判断了, 还设置了公共变量将注册的手机号存起来,但是同时间内还是会有重复.
因为不能删除数据,所以不能增加唯一索引,只会在高访问量的情况下才会出现,然后我自己也没法测试.
请问大家有什么经验分享吗? 或者有好的解决办法么?
走同样的路,发现不同的人生
MongoDB 不支持 ACID 所以得自己处理。防止并发访问导致问题的思路是:
所以你可以弄一个「插入数据锁」。一个简单的方案是:Redis 里放一个 list 名为 insert_lock,里边只有一个元素。每次插入操作前拿 blpop 命令去取那个元素,插入完成之后再把那个元素放回去。
当然你要是能用共享内存就更好了。或者用文件锁(如 flock)也行。
db.collection.findAndModify支持原子操作, 结合upsert 就能满足你的需求。
db.collection.findAndModify
实时性要求不高就用消息队列插吧
MongoDB 不支持 ACID 所以得自己处理。防止并发访问导致问题的思路是:
所以你可以弄一个「插入数据锁」。一个简单的方案是:Redis 里放一个 list 名为 insert_lock,里边只有一个元素。每次插入操作前拿 blpop 命令去取那个元素,插入完成之后再把那个元素放回去。
当然你要是能用共享内存就更好了。或者用文件锁(如 flock)也行。
db.collection.findAndModify
支持原子操作, 结合upsert 就能满足你的需求。实时性要求不高就用消息队列插吧