比如現(xiàn)在想實(shí)現(xiàn)類似一個(gè)秒殺的功能,10個(gè)用戶搶2個(gè)商品,redis或者memcache或者其它的nosql產(chǎn)品,有沒有類似的功能,就是我有個(gè)計(jì)數(shù)器(庫存,比如等于2)然后,開始搶商品的時(shí)候,前2個(gè)用戶,已經(jīng)將庫存減到0了,當(dāng)?shù)?個(gè)人來搶的時(shí)候,計(jì)數(shù)器不會(huì)變?yōu)?1,而是還是為0,并且這個(gè)操作會(huì)返回一個(gè)操作失敗,或者類似于mysql的返回影響行數(shù)為0的這種反饋信息,讓我知道的?
ringa_lee
reids 有DECR(原子遞減),memcache也有decrement功能,他們的區(qū)別是,redis的原子遞減到0了會(huì)變?yōu)樨?fù)數(shù),而memcache的會(huì)一直為0
樂觀鎖 解決
不檢查鎖 直接通過 但是通過后核對(duì)版本號(hào) 正確不操作 否則回滾(需要事物支持)
有個(gè)問題就是 可能2,3次序的用戶沒搶到 4,5次序的搶到了(這種情況你寫一個(gè)demo測(cè)試一下就清楚了)