redis鎖的應用

思路:

使用redis的特性setnx key value   如果不存在就設置 key 和value,操作完成後del key 刪除key ,讓下一個線程去獲取這個key

設置好了以後當第二個線程去 setnx的時候,會返回錯誤,保證redis數據同時只能被一個線程訪問

SET key value [EX seconds] [PX milliseconds] [NX|XX]

setnx 有個問題,如果在操作過程中程序崩潰,則會變成死鎖,所以添加一個超時設置

set name  123 ex 20 nx

設置name123 超時爲 20 秒,  nx表示 如果key不存在就執行set, xx表示 如果key存在就執行set

 

但是同樣這個也會存在一個問題 ,就是如果超時時間內用戶沒有操作完成,key會自動過期,還是會產生數據不安全

redis的watch特性

watch  key    就是觀察一個key,如果key被修改則redis事務操作失敗

watch name;

multi

set name 20 

exec

這是exec會操作失敗,

不管不是在本線程操作,或者其他線程操作,如果key的值被更改事務執行就會失敗

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