基於Redis的分布式鎖的簡單實現方法

2022-09-25 23:36:07 字數 600 閱讀 7364

redis官方給出兩種思路

第一種:set key value [ex secondpyzryvs] [px milliseconds] nx

第二種:setnx+getset

首先,分別看一下這幾個命令

set命令

setnx命令

getset命令

接著,看第一種方式

官方給出的思路是這樣的

還有一處,也是類似的

這種方式的實現可能是這樣的:

第二種方式

官方給出的思路是這樣的

**可能看起來像是這樣

總結:這兩種方式的基本思路都是:客戶端在伺服器上設定乙個key值,如果能夠設定成功,則視為加鎖成功;刪除key,則表示解鎖。

不同之處在於,set方式只需判斷能不能設定成程式設計客棧功,刪除的時候判斷是不是自己設定的,萬一超時了利用系統自帶的生存時間可以自動釋放鎖。

而setnx+gepyzryvtset方式除了需要判斷能不能設定成功,在設定失敗的時候還要進一步判斷其值是否有效,是否超時由客戶端自己判斷

參考 本文標題: 基於redis的分布式鎖的簡單實現方法

本文位址: /shujuku/redis/242546.html

基於redis分布式鎖的簡單實現

步驟 引入依賴 springboot整合redis org.springframework.boot groupid spring boot starter data redis artifactid dependency 加鎖以及 解鎖工具類 package com.hzrys.atplatfor...

簡單適用基於redis的分布式鎖

public class lock private long lockttl value private long lockwait public lock stringredistemplate stringredistemplate public boolean lockwait string ...

基於redis的分布式鎖

public class redislock 加鎖 取到鎖加鎖,並返回值用於解鎖 取不到鎖則立即返回 1 param millitimeout 最長鎖定時間,超時後自動刪除鎖,避免死鎖 return public synchronized long lock long millitimeout lo...