1、先查,然后判断是否插入或更新。 无法保证原子性。
2、使用事务, 数据库锁。 可以保证原子性。
3、如果想用高并发无锁,使用数据库唯一索引,或组合索引。
4、不想消耗服务器资源,逻辑前加redis进行限制。

以上是库在己方的情况,实际中因为设计到第三方接口调用和回调,复杂度会大大提高。