node.js - Mongodb 插入数据会有重复的请问怎么解决?
怪我咯
怪我咯 2017-04-17 11:16:46
[Node.js讨论组]

我现在用nodejs做了一个活动网站 每日访问量大概10w

入库的时候手机号会有重复的出现,在同一时间内插入的,虽然很少 但是还是有.

我已经在入库前进行各种判断了, 还设置了公共变量将注册的手机号存起来,但是同时间内还是会有重复.

因为不能删除数据,所以不能增加唯一索引,只会在高访问量的情况下才会出现,然后我自己也没法测试.

请问大家有什么经验分享吗? 或者有好的解决办法么?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
PHP中文网

MongoDB 不支持 ACID 所以得自己处理。防止并发访问导致问题的思路是:

  • 加锁
  • 访问数据
  • 解锁

所以你可以弄一个「插入数据锁」。一个简单的方案是:Redis 里放一个 list 名为 insert_lock,里边只有一个元素。每次插入操作前拿 blpop 命令去取那个元素,插入完成之后再把那个元素放回去。

当然你要是能用共享内存就更好了。或者用文件锁(如 flock)也行。

高洛峰

db.collection.findAndModify 支持原子操作, 结合upsert 就能满足你的需求。

黄舟

实时性要求不高就用消息队列插吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号