redis的一點思考

1.redis集羣,在Redis的master節點上拿到了鎖;但是這個加鎖的key還沒有同步到slave節點;master故障,發生故障轉移,slave節點升級爲master節點;

導致鎖丟失。
https://yq.aliyun.com/articles/674394

redlock
zookeeper(強一致性)

2.redisson.lock的性能問題怎麼解決?

思路1:類似java1.7中 concurrenthashmap中的分段鎖
比如現在 product01 的庫存爲100 
則可以將這個值分段存儲
product01  10
product02  10
···
product10  10

3.redis.setnx的問題?key:productnum,value:clientpk

設置的過期時間可能小於程序運行需要時間,
導致redis提前釋放鎖,此時被別的線程再加鎖,
當此線程釋放鎖的時候釋放了第二個線程加的鎖;所以
redis.setnx()
//釋放鎖之前應該判斷是否是當前線程加的鎖
if(get(productmun).equals(clientpk))
	redis.delte

//功能強大的redisson原理redisson.lock()
可以開一個子線程,定時爲主線程續命,比如過期時間爲10秒,
則每3秒判斷一次,線程是否持有該鎖,若持有,則將過期時間再設置一次10
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章