PHP高并发写入数据重复问题

发布于 2022-09-11 23:44:09 字数 168 浏览 18 评论 0

在注册页面上,如果出现高并发情况下,会出现重复用户名的情况,那么就导致后续登录环节出现混乱。

考虑过使用队列,但是队列有一定的时间差,按照注册流程,注册成功后会马上随机到达用户界面进行下一步操作,如果队列的话,可能到达用户界面时候,用户表注册信息还没有进来

有没有其他什么办法可以解决的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

她如夕阳 2022-09-18 23:44:09
  • 查重时加锁
  • Redis 用一个 Hash 来存储已经被占用的用户名,然后先判断再插入数据库。
素罗衫 2022-09-18 23:44:09

如果要防止用户名重复,那么有比较多的方式来实现。
1.从根源防重复,那么数据库表字段中“名称”加唯一索引。
2.使用redis集合
3.使用redis布隆过滤器

但是1有个问题,虽然能从根源上解决问题,但是如果数据量很大,数据库压力会很大,全部请求会转化为SQL并打到数据库,所以可以使用redis。

如果只是高并发,但是数据量不大,使用redis集合是可以解决问题的,但是如果并发时间长,预估数据量会很大,redis的内存不是那么足,那么使用redis集合可能就不那么太合适,可以使用redis的布隆过滤器进行过滤(对使用布隆过滤器的副作用需要有预估并有合适的解决方案)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文