最贊回答 / study_workSpace
使用互斥鎖(mutex key) ;簡單點講就是類似“鎖”的機(jī)制,在緩存更新或者過期的情況下,先獲取鎖,在進(jìn)行更新或者從數(shù)據(jù)庫中獲取數(shù)據(jù)后,再釋放鎖,需要一定的時間等待,就可以從緩存中繼續(xù)獲取數(shù)據(jù)String get(String key){
? ?String value = redis.get(key); ? ?if(value == null){ ? ? ? ?if(redis.setnx(key_Mutex),"1"){
? ? ? ? ? ?redis.expire(key_mutex,3*...
2018-07-05
最贊回答 / AlanLiu0328
insert只會鎖當(dāng)前行,別人insert和你insert不沖突。 而update就不一樣了。 比如大家都要更新1000元搶Iphone6更新,那么就會搶同一行的鎖
2018-04-10
最新回答 / 慕蓋茨030889
沒有庫存的情況下會insert,但是update執(zhí)行時更新條數(shù)小于0,就會拋出異常、事務(wù)回滾。好處就是: 用戶第一次執(zhí)行秒殺 ? insert -> update(持鎖) ->commit(釋放鎖)????????????????? 用戶第二次執(zhí)行秒殺 ? ?insert -> result減少了事務(wù)行級鎖的時間。
2018-03-26