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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章