比如现在想实现类似一个秒杀的功能,10个用户抢2个商品,redis或者memcache或者其它的nosql产品,有没有类似的功能,就是我有个计数器(库存,比如等于2)然后,开始抢商品的时候,前2个用户,已经将库存减到0了,当第3个人来抢的时候,计数器不会变为-1,而是还是为0,并且这个操作会返回一个操作失败,或者类似于mysql的返回影响行数为0的这种反馈信息,让我知道的?
迷茫2017-04-21 11:19:22
reids 有DECR(原子遞減),memcache也有decrement功能,他們的區別是,redis的原子遞減到0了會變成負數,而memcache的會一直為0
伊谢尔伦2017-04-21 11:19:22
樂觀鎖 解決
不檢查鎖 直接通過 但是通過後核對版本號 正確不操作 否則回滾(需要事物支援)
有個問題就是 可能2,3次序的用戶沒搶到 4,5次序的搶到了(這種情況你寫一個demo測試一下就清楚了)