鍍金池/ 問(wèn)答/HTML/ node分布式怎么建立全局鎖

node分布式怎么建立全局鎖

前提是:?jiǎn)尉€程的模型下應(yīng)該盡量避免寫沖突的情況,因?yàn)殒i會(huì)嚴(yán)重影響性能

項(xiàng)目最近遇到一個(gè)坑,使用express-session(redis store);
有兩個(gè)請(qǐng)求同一個(gè)客戶端會(huì)同時(shí)發(fā)出(暫時(shí)解決方法是換一種寫法,不讓這種情況發(fā)生)

GET: /a //執(zhí)行:req.session.a = 1  ---> 請(qǐng)求返回時(shí)寫入redis
GET: /b //執(zhí)行:req.session.b = 2  ---> 請(qǐng)求返回時(shí)寫入redis

如上面兩個(gè)請(qǐng)求,就一定會(huì)發(fā)生沖突,其中一個(gè)就會(huì)失效??偟膩?lái)說(shuō)還是經(jīng)驗(yàn)不足。

當(dāng)項(xiàng)目業(yè)務(wù)邏輯多了,就會(huì)出現(xiàn)需要加鎖的情況。是應(yīng)該全力避免還是有加鎖的解決方案?

回答
編輯回答
陪她鬧

redis內(nèi)部是可以構(gòu)建分布式全局鎖的

2017年12月4日 04:04
編輯回答
生性

可以用mysql或redis鎖啊

2017年3月24日 13:12
編輯回答
懷中人

基于redis的redlock可以解決node分布式的問(wèn)題,當(dāng)然肯定有其它鎖的方式。加鎖還是盡量避免,畢竟影響性能。

Package:redlock

RedLock算法介紹

2017年7月22日 00:38