java锁 乐观锁 分布式锁 应用场景

首先如果是单台机

加java锁 可以控制注册和更新

加乐观锁 可以控制更新

唯一索引可以控制数据唯一性. 

但是单台机没法拓展会有并发问题.

现在都是多台机.所以不考虑加java锁的.

如果操作的范围涉及到 redis和db一起操作.

又是分布式部署只能上redis锁或者zookeeper锁了.


但是分布式锁又比较麻烦.


目前常见做法. 普通数据不考虑加锁.

敏感数据加唯一索引保证注册数据唯一,更新通过乐观锁控制.

唯一索引的问题在于

1如果表有delete字段,就没法加唯一索引了.

如果还是要加,需要引入一个新字段比如uniquetoken,删除的数据设置为null,正常数据设置为1.

用2个字段做联合唯一索引,缺点就是会有些麻烦,需要业务代码处理增删改查.

2如果表的业务需求没法加唯一索引,那就保证不了数据入库是唯一的.

最好是前端控制下,不让重复提交. 可以基本避免问题.

你可能感兴趣的:(java锁 乐观锁 分布式锁 应用场景)