redis事物及鎖應(yīng)用
過程:把命令輸入后塘雳,就把命令放在隊(duì)列里
打完exec,再集中執(zhí)行
redis事物的執(zhí)行
redis的事物開啟multi
redis的語句普通命令
redis的失敗取消 discard(所有放在隊(duì)列中的語句都不執(zhí)行)
redis成功exec
在mutil后面的語句中舷蟀,語句出錯(cuò)可能有2種情況
語法錯(cuò)誤恤磷,exec,直接報(bào)錯(cuò)雪侥,所以語句都不執(zhí)行
語法本省沒錯(cuò)碗殷,但使用對(duì)象有問題,exec之后速缨,會(huì)執(zhí)行正確的語句锌妻,跳過不正確的語句。
思考
我在買票旬牲,ticket-1,money-100
而票只有一張仿粹,如果再我multi之后,和exec之前原茅,票被別人買了吭历,即ticket變成了0。我該如何觀察這種情景擂橘,并不再提交晌区。
對(duì)key進(jìn)行檢測,只要我設(shè)置監(jiān)聽后通贞,一有人改動(dòng)朗若,我最后的exec就不能成功執(zhí)行
具體的命令 watch命令
watch ticket
multi
decr ticket
decrby money 100
exec
(nil)返回nil,說明監(jiān)視的ticket已經(jīng)被改變了昌罩,事物就取消了
watch key1 key2 ……keyn
作用:監(jiān)聽key1 key2 keyn有沒有變化哭懈,只要其中一個(gè)有變化,則事物取消(所有影響都失效)
unwatch
作用:取消所有的watch監(jiān)聽