比如現在想實現類似一個秒殺的功能,10個用戶搶2個商品,redis或者memcache或者其它的nosql產品,有沒有類似的功能,就是我有個計數器(庫存,比如等於2)然後,開始搶商品的時候,前2個用戶,已經將庫存減到0了,當第3個人來搶的時候,計數器不會變為-1,而是還是為0,並且這個操作會返回一個操作失敗,或者類似於mysql的返回影響行數為0的這種反饋信息,讓我知道的?
ringa_lee
reids 有DECR(原子遞減),memcache也有decrement功能,他們的區別是,redis的原子遞減到0了會變成負數,而memcache的會一直為0
沒有。會變成-1,恐怕你要自行判斷了。
樂觀鎖 解決
不檢查鎖 直接通過 但是通過後核對版本號 正確不操作 否則回滾(需要事物支援)
有個問題就是 可能2,3次序的用戶沒搶到 4,5次序的搶到了(這種情況你寫一個demo測試一下就清楚了)
reids 有DECR(原子遞減),memcache也有decrement功能,他們的區別是,redis的原子遞減到0了會變成負數,而memcache的會一直為0
沒有。會變成-1,恐怕你要自行判斷了。
樂觀鎖 解決
不檢查鎖 直接通過 但是通過後核對版本號 正確不操作 否則回滾(需要事物支援)
有個問題就是 可能2,3次序的用戶沒搶到 4,5次序的搶到了(這種情況你寫一個demo測試一下就清楚了)