第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

跪求!redis實(shí)現(xiàn)分布式鎖,如何持續(xù)搶鎖操作?

跪求!redis實(shí)現(xiàn)分布式鎖,如何持續(xù)搶鎖操作?

藍(lán)山帝景 2019-06-13 09:55:56
新手初學(xué)redis,嘗試redis鎖的時(shí)候,go代碼如下:funcmain(){client:=redis.NewClient(&redis.Options{Addr:"localhost:6379",})fori:=0;i<100;i++{gofunc(){for{//一直for循環(huán)搶鎖嗎?ok,err:=client.SetNX("sync",true,time.Second*5).Result()iferr==nil&&ok{res,err:=client.Get("num").Result()fmt.Printf("num:%s\n",res)num,err:=strconv.Atoi(res)err=client.Set("num",num+1,0).Err()_,err=client.Del("sync").Result()iferr!=nil{log.Println(err)}break}//time.Sleep(time.Millisecond*10)}}()}time.Sleep(time.Second*20)}代碼中我開(kāi)了100個(gè)協(xié)程搶鎖,操作一個(gè)數(shù)據(jù).我的疑問(wèn)是,當(dāng)一個(gè)協(xié)程搶到了這個(gè)sync鎖,那么其他的99個(gè)協(xié)程,都一直在不停的在一個(gè)循環(huán)中重復(fù)搶鎖嗎?這樣子是否會(huì)對(duì)redis產(chǎn)生大量的無(wú)意義的請(qǐng)求...網(wǎng)上搜了一下相關(guān)的實(shí)現(xiàn)demo代碼,發(fā)現(xiàn)都是類(lèi)似的while(true){//xxxxxxx}進(jìn)行搶鎖....所以很疑惑,若是真實(shí)生產(chǎn)環(huán)境也是這樣實(shí)現(xiàn)嘛....還是我一開(kāi)始就錯(cuò)了...如果有相關(guān)資料或者是搜索關(guān)鍵詞,還望大佬指點(diǎn)一二.
查看完整描述

2 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

看你要實(shí)現(xiàn)什么樣的鎖,或者基于什么樣的使用場(chǎng)景,比如說(shuō)排它鎖,redis就實(shí)現(xiàn)不了,排它鎖在獲取不到鎖的情況下會(huì)阻塞進(jìn)入等待隊(duì)列。在其他進(jìn)程釋放鎖時(shí)會(huì)通知該進(jìn)程再去獲取鎖,redis不提供這種基于key的通知機(jī)制,所以他實(shí)現(xiàn)不了排它鎖。不過(guò)分布式排它鎖,可以由Zookeeper實(shí)現(xiàn)。
另外一種分布式鎖的實(shí)現(xiàn)方式是通過(guò)樂(lè)觀(guān)鎖和自旋的實(shí)現(xiàn)方式,就是你說(shuō)的那種方式,不過(guò)一般會(huì)設(shè)置超時(shí)時(shí)間,也就是redis設(shè)置key的ttl。這樣不至于進(jìn)程一直等待下去。這種鎖適應(yīng)于鎖內(nèi)操作時(shí)間比較短,鎖競(jìng)爭(zhēng)不是那么激烈的情況。
你說(shuō)的那種100個(gè)進(jìn)程搶鎖的情況,競(jìng)爭(zhēng)這么激烈,還是用排它鎖比較好。
                            
查看完整回答
反對(duì) 回復(fù) 2019-06-13
?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊

這個(gè)原因充分說(shuō)明了要項(xiàng)目驅(qū)動(dòng)學(xué)習(xí)。只有你知道具體的項(xiàng)目的場(chǎng)景,才可以決定自己這個(gè)鎖怎么處理。比如,你如果搶不到資源就必須等待,而且是同步請(qǐng)求,那么必須等待。比如,你如果可以接受若一致,就可以考慮等待多久鎖,然后放棄,記錄日志或者其他補(bǔ)償機(jī)制。當(dāng)然這個(gè)就類(lèi)似于ReentrantLock里面的tryLock和tryLock(longtimeout,TimeUnitunit)的區(qū)別
                            
查看完整回答
反對(duì) 回復(fù) 2019-06-13
  • 2 回答
  • 0 關(guān)注
  • 762 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)