这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
分享:技术:分布式:分布式锁 [2017/05/15 07:33] gxx 创建 |
分享:技术:分布式:分布式锁 [2017/05/15 07:40] (当前版本) gxx |
||
---|---|---|---|
行 8: | 行 8: | ||
===== 场景三 ===== | ===== 场景三 ===== | ||
支付场景:一笔充值完成,银行前端和后端同时返回成功,对于同一笔交易,不能两次给用户加余额。 | 支付场景:一笔充值完成,银行前端和后端同时返回成功,对于同一笔交易,不能两次给用户加余额。 | ||
+ | ===== 解决方案 ===== | ||
+ | 常用的四种方案: | ||
+ | - 基于数据库表做乐观锁,用于分布式锁。 | ||
+ | - 使用memcached的add()方法,用于分布式锁。 | ||
+ | - 使用redis的setnx()、expire()方法,用于分布式锁。 | ||
+ | - 使用redis的setnx()、get()、getset()方法,用于分布式锁。 | ||
+ | 不常用但是可以用于技术方案探讨的: | ||
+ | - 使用memcached的cas()方法,用于分布式锁。 | ||
+ | - 使用redis的watch、multi、exec命令,用于分布式锁。 | ||
+ | - 使用zookeeper,用于分布式锁。 | ||
- | + | 参考:[[http://www.cnblogs.com/PurpleDream/p/5559352.html|分布式锁1 Java常用技术方案]] | |
- | + |