15 redis-分布式锁
生活随笔
收集整理的這篇文章主要介紹了
15 redis-分布式锁
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 概念
分布式鎖:是進程級別的鎖,用于控制多個進程對同一資源的訪問。
實現方式:1. 數據庫樂觀鎖;2. 基于Redis的分布式鎖;3. 基于ZooKeeper的分布式鎖
可靠性要求:
- 互斥性。在任意時刻,只有一個客戶端能持有鎖。
- 不會發生死鎖。即使有一個客戶端在持有鎖的期間崩潰而沒有主動解鎖,也能保證后續其他客戶端能加鎖。
- 具有容錯性。只要大部分的Redis節點正常運行,客戶端就可以加鎖和解鎖。
- 加鎖和解鎖必須是同一個客戶端,客戶端自己不能把別人加的鎖給解了。
2 SETNX實現分布式鎖
2.1 相關命令
在實現的時候要注意的幾個關鍵點:
1、鎖信息必須是會過期超時的,不能讓一個線程長期占有一個鎖而導致死鎖;
2、同一時刻只能有一個線程獲取到鎖。
幾個要用到的redis命令:
setnx(key, value):“set if not exits”,若該key-value不存在,則成功加入緩存并且返回1,否則返回0。
get(key):獲得key對應的value值,若不存在則返回nil。
getset(key, value):將給定 key 的值設為 value ,并返回 key 的舊值(old value)。
expire(key, seconds):設置key-value的有效期為seconds秒。
2.2 流程圖
?
?
轉載于:https://www.cnblogs.com/lizhuxin/p/10745317.html
總結
以上是生活随笔為你收集整理的15 redis-分布式锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu18.04 VMtools的
- 下一篇: Python中的高级变量类型