如何通過Redis實現分布式鎖

2021-09-29 02:39:35 字數 470 閱讀 1001

互斥性,安全性,死鎖,容錯

時間複雜度:o(1)

返回值:設定成功,返回1;設定失敗,返回0。

expire key seconds

設定key的生存時間,當key過期時(生存時間為0),會自動刪除

缺點:原子性得不到滿足

set key value [ex secounds] [px milliseconds] [nx|xx]

ex second:設定鍵得過期時間為second秒

px millisecond :設定鍵得過期時間為millisecond 毫秒

nx :只在鍵不存在時,才對鍵進行設定操作

xx :只在鍵已經存在時,才對鍵進行設定操作

set操作成功完成時,返回ok,否則返回nil

集中過期,由於清除大量使用的key很耗時,會出現短暫的卡頓現象

解決方案

在設定key的過期時間的時候,給每個key加上隨機值

如何通過Redis實現分布式鎖

目錄 分布式鎖需要解決的問題 如何通過redis實現分布式鎖 如何解決setnx長期有效的問題 大量的key同時過期的注意事項 互斥性 任意時刻,只能有乙個客戶端獲取鎖 安全性 鎖只能由持有該鎖的客戶端刪除 死鎖 獲取鎖的客戶端因為某些原因宕機而未能釋放鎖,其他客戶端就無法獲取鎖 容錯 當一些red...

通過Redis實現分布式鎖

當多執行緒的情況,可用redis來實現鎖。關於分布式鎖的原理網上很多,我這裡就只給出其中一種寫法。spring redis host 192.168.119.103 port 6379 password 123456附上 package com.redis.service import org.sl...

通過Redis實現分布式鎖

分布式鎖是控制分布式系統或不同系統之間共同訪問共享資源的一種鎖的實現 如果不同的系統或同一系統的不同主機間共享某一資源時,往往需要通過互斥來防止彼此干擾,以此來保證一致性。互斥性 任一時刻只能有乙個客戶端獲取鎖,不能有兩個客戶端都獲取到鎖 安全性 鎖只能被持有該鎖的客戶端刪除,不能由其他客戶端刪除 ...