Redis分布式鎖的實現

2021-10-21 18:09:48 字數 1198 閱讀 5356

分布式鎖應用場景

秒殺活動

如果沒有分布式鎖,可能會出詳細超買的情況。即使在方法中使用了synchronized,在分布式的系統中還是會出現超賣,只有使用分布式鎖才可以解決該問題。

簡單版分布式鎖,存在缺陷超時時間不好設定。

@autowired

private stringredistemplate stringredistemplate;

/*** 利用redis實現最簡單的分布式鎖(功能不夠完善)

* @return

*/public string dstock()

int stock = integer.parseint(stringredistemplate.opsforvalue().get("stock"));

if(stock>0) else

} finally

} return "end";

}

比較完善版本,採用的redisson。

redisson  預設過期30s,每10s檢查一下。

引入相關的jar

org.redisson

redisson

3.6.5

新增配置

@bean

public redisson redisson()

具體實現

@autowired

private redisson redisson;

@autowired

private stringredistemplate stringredistemplate;

/*** 利用redis實現最簡單的分布式鎖(功能不夠完善)

* @return

*/public string dstock() else

} finally

return "end";

}

高併發的分布式鎖,在此基礎上再進行優化。

利用分段鎖相同的原理,對資料進行分段處理。

庫存分段儲存  p_001 100  分為  p_001_1  10  p_001_2  10 。。。。

分布式鎖 使用Redis實現分布式鎖

關於分布式鎖的實現,我的前一篇文章講解了如何使用zookeeper實現分布式鎖。關於分布式鎖的背景此處不再做贅述,我們直接討論下如何使用redis實現分布式鎖。關於redis,筆主不打算做長篇大論的介紹,只介紹下redis優秀的特性。支援豐富的資料型別,如string list map set zs...

redis實現分布式鎖

隨便 系統越來越大,各功能模組除了垂直切割以外,同時也得做集群處理,那麼問題來了,在多執行緒情況下對於資源的競爭就需要乙個統一的訪問限制。以選課系統為例子,集群中各節點對課程可選數量同時操作,這裡就需要同步了,否則會導致最後選到的數量比可選的數量大,這裡我們的分布式鎖就派上用場了。利用redis來實...

redis實現分布式鎖

分布式鎖可以基於很多種方式實現,比如zookeeper redis.不管哪種方式,他的 基本原理是不變的 用乙個狀態值表示鎖,對鎖的占用和釋放通過狀態值來標識。1 使用redis的setnx命令實現分布式鎖 1 實現的原理 redis為單程序單執行緒模式,採用佇列模式將併發訪問變成序列訪問,且多客戶...