Redis實現分布式鎖1

2022-08-22 13:48:08 字數 1875 閱讀 8743

jedis結合setnx方法實現分布式鎖

public boolean lock(string key, int exprie) 

object obj = this.get(lockkey);

if (obj==null) else

}value = (string)obj;

if (model.islose()) else

}logger.warn("get redis lock fail, key =" + lockkey);

return false;

} catch (exception ex)

}public void unlock(string key) catch (exception ex)

logger.info("redis unlock success ,key = " + lockkey);

}private lockmodel createmeta(int exprie)

public string getlockkeyprev()

/*** 設定key

* 需要傳入key是否不存存在

** @param key 鍵

* @param value 值

* @param expx ex/px 值只能取ex或者px,代表資料過期時間的單位,ex代表秒,px代表毫秒

* @param interval 過期時間,單位是expx所代表的單位。

* @return set 在設定操作成功完成時,才返回 ok 。

* 如果設定了 nx 或者 xx ,但因為條件沒達到而造成設定操作未執行,那麼命令返回空批量回覆(null bulk reply)

*/public string setnx(string key, object value, string expx, long interval) catch (exception e) finally

return result;

}/**

* 刪除給定的乙個或多個 key 。

* 不存在的 key 會被忽略。

** @param key 鍵

* @return 被刪除 key 的數量。

*/public long delete(string key) catch (exception e) finally

return result;

}/**

* 為給定 key 設定生存時間,當 key 過期時(生存時間為 0 ),它會被自動刪除。

* 可以對乙個已經帶有生存時間的 key 執行 expire 命令,新指定的生存時間會取代舊的生存時間。

** @param key

* @param interval

* @return 設定成功返回 1 。

* 當 key 不存在或者不能為 key 設定生存時間時(比如在低於 2.1.3 版本的 redis 中你嘗試更新 key 的生存時間),返回 0 。

*/public long expire(string key, int interval) catch (exception e) finally

return result;

}/**

* 返回 key 所關聯的字串值

* 如果 key 不存在那麼返回特殊值 nil 。

** @param key

* @return 當 key 不存在時,返回 nil ,否則,返回 key 的值。

* 如果 key 不是字串型別,那麼返回乙個錯誤。

*/public object get(string key) catch (exception e) finally

return o;

}

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

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

redis實現分布式鎖

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

redis實現分布式鎖

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