mysql - Java并发添加数据,如何保证不会添入相同的数据?

 小辛牛牛123牛牛小辛321 发布于 2022-10-26 07:20

我有这样的业务场景:

一个接口往mysql的user表中insert数据,一个realname字段和一个groupid字段。

我现在想保证realname添入的时候同一group下不能有重复的,但是我现在不能给这两个字段加联合唯一索引。

因为库里realname有很多是空的情况。

问题:

现在我在用大量线程访问这个接口,添加user。这些线程realname如果有相同的,就可能会添入realname一样的数据。

我如何处理才能保证一定不会添入重复数据?不能用synchronized关键字,因为是多机集群部署。

一个服务器保证同步,其他的依然肯定会出现这个问题。

小弟请教各位大神,这种情况如何处理,小弟技术小白一个,请详细一点说明,先谢谢各位了。

4 个回答
  • 为什么不使用redis把这两个字段存起来呢,添加的时候判断是否已经存在了不就行了吗?

    2022-10-27 00:41 回答
  • 把空值的地方赋值成NULL,然后两个字段加唯一索引。

    2022-10-27 00:41 回答
  • 锁表,不让其它线程读写

    参考:http://blog.csdn.net/m5824456...

    2022-10-27 00:41 回答
  • 最终打算通过memcached或者redis实现一个分布式锁来解决此问题。
    具体参考:
    http://blog.csdn.net/x_i_y_u_...

    2022-10-27 00:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有