咱们业务处理通常会存在多并发的状况,会引发一些必要问题。例如:查询一条数据,判断不存在则插入,存在则更新,若是是两条数据同时过来,数据库可能会插入两条数据,致使异常状况!redis
这边有三种解决方案,供你们参考:sql
1. 缓存层加分布式锁,若是是单机服务,利用JVM锁。分布式锁能够利用redis、zookeeper等数据库
2. 数据库增长惟一索引,若是并发,抛出异常,进行补偿。精准定位问题,不影响大多数状况。第一个方法全部都须要加锁,解锁缓存
3.利用临时表,在第二个插入逻辑等时候,利用sql进行判断,是否存在,可是这样没法插入,虽然不报错,丢失此次本应该更新等数据。并发
转发:https://blog.csdn.net/hanruikai/article/details/103514513分布式