Java高并发编程 巧用Memcache做高并发锁

2019年08月08日草稿

0x01 业务场景

我们假设要做一个拍卖系统,谁先下单,那么就锁定这个商品设置memcache里的数据 ,等待支付。那么一般流程是怎样的呢?

我们假设:

商品ID:1001
用户A ID:2001
用户B ID:2002

商品A被用户A锁定的数据状态为:

 key:lock_1001
 value:2001

假设商品还没有被锁定,A、B同时查询这个商品有没有被锁定,结果是A、B操作线程在memcache里都没查到这个值。然后进行加锁,这就导致了A、B操作线程同时执行导致业务错误。高并发下get和keyExits判断结果会出现一样的结果。

0x02 处理方式

由于Memcache的add操作具有原子性,可以通过返回false和true来加锁。

你可能感兴趣的:(【Java编程】)