8 回答

慕前端25690
TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超1個(gè)贊
Redis為單進(jìn)程單線程模式,采用隊(duì)列模式將并發(fā)訪問變?yōu)榇性L問。Redis本身沒有鎖的概念,Redis對于多個(gè)客戶端連接并不存在競爭,但是在Jedis客戶端對Redis進(jìn)行并發(fā)訪問時(shí)會發(fā)生連接超時(shí)、數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤、阻塞、客戶端關(guān)閉連接等問題,這些問題均是由于客戶端連接混亂造成。對此有2種解決方法:
?1.客戶端角度,為保證每個(gè)客戶端間正常有序與Redis進(jìn)行通信,對連接進(jìn)行池化,同時(shí)對客戶端讀寫Redis操作采用內(nèi)部鎖synchronized。 ? 2.服務(wù)器角度,利用setnx實(shí)現(xiàn)鎖。
?注:對于第一種,需要應(yīng)用程序自己處理資源的同步,可以使用的方法比較通俗,可以使用synchronized也可以使用lock;第二種需要用到Redis的setnx命令,但是需要注意一些問題。
添加回答
舉報(bào)
0/150
提交
取消