在鎖的實現上,我們知道有redis分布式鎖和zookeeper鎖兩種方式,那麼如何選擇呢看下表
redis方式
zookeeper方式
優點支援高併發且效率高
鎖的安全行較高,因為zookeeper可持久化,還可以實時監聽獲取鎖的客戶端狀態。一旦客戶端"down掉",則瞬間節點隨之消失,zookeeper因而能第一時間釋放鎖。不在像使用分布式快取實現鎖的那樣還需要加入超時時間判斷的邏輯。
缺點如果記憶體大小不足,則極有可能導致快取中的鎖資訊丟失.
效能開銷比較高。因為該方式需要動態建立,刪除zookeeper的臨時節點,頻繁操作磁碟讀寫來實現鎖功能,這種方式不再適合直接被高併發的場景使用。
實現直接採用redis的分布式客戶端框架redisson,即可方便地實現分布式鎖
直接採用zookeeper第三方庫curator,即可方便地實現分布式鎖
使用場景
適合高併發場景。但是需要注意如下3個方面的配合使用:加上超時時間避免死鎖;提供足夠支撐鎖服務的記憶體空間;穩定的集群化管理.
適合對可靠性要求非常高,同時併發程度不高的場景
結合自己的使用場景,我們比較清楚如何選擇那種方式來實現分布式鎖.
Redis的事務與鎖
一.redis事務 redis的事務和傳統關聯式資料庫的事務並不相同。在關聯式資料庫中,使用者首先向資料庫伺服器傳送begin,然後執行各個相互一致的寫操作和讀操作,最後,使用者可以選擇傳送commit來確認之前所做的修改,或者傳送rollback來放棄那些修改。在redis裡面也有簡單的方法可以處...
redis 樂觀鎖與事務
一 樂觀鎖 先表明態度,樂觀鎖並不是乙個好的實現方式!在mysql中,我們一般通過給資料表額外建乙個version欄位,讀的時候讀出verson,更新的時候 v2 versin 1,語句為 update set version version 1 where id and version v2 只要...
Redis 鎖機制與監控
redis沒有原子性,所以當前事務在操作時,其他事務可以修改,造成錯誤 redis還沒有隔離性 悲觀鎖 樂觀鎖 模擬轉賬業務 set money 100 set out 0 watch money 監控 money muti decrby money 20 incrby out 20 如果在事務提交...