1:先select 后再insert (不适合高并发场景)
2:加悲观锁 select where for update 加锁
3:加乐观锁 表中加个version 字段 update 更新数据加上version更新
4:加唯一索引,如果有重复数据,则保存不成功 (简单有效) 对这种数据抛出的异常,进行捕获,返回成功 ,数据已经存在
5:根据状态机(这个就是我在做207项目中使用到,文件解析服务会有个解析结果上报,和告警上报)先后顺序不一定 ,这个时候可以加上status ,有结果上报 后,再更新有告警上报,对影响行数据的判断
7:加分布式锁
redis分布式锁(之前做支付系统的是 订单号+商户号组成key)