1

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

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

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

10月29日提问
2 个回答
4

已采纳
  • 查重时加锁
  • Redis 用一个 Hash 来存储已经被占用的用户名,然后先判断再插入数据库。
0

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

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

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

撰写答案

推广链接