用redis實現分布式鎖,秒殺案例

2021-08-19 23:48:10 字數 1333 閱讀 5477

/**

* 分布式鎖的簡單實現**

* created by liuyang on 2017/4/20.

*/public

class

distributedlock

/*** 加鎖

*@param lockname 鎖的key

*@param acquiretimeout 獲取超時時間

*@param timeout 鎖的超時時間

*@return 鎖標識

*/public string lockwithtimeout(string lockname, long acquiretimeout, long timeout)

// 返回-1代表key沒有設定超時時間,為key設定乙個超時時間

if (conn.ttl(lockkey) == -1)

try catch (interruptedexception e)

}} catch (jedi***ception e) finally

}return retidentifier;

}/**

* 釋放鎖

*@param lockname 鎖的key

*@param identifier 釋放鎖的標識

*@return

*/public

boolean

releaselock(string lockname, string identifier)

retflag = true;

}conn.unwatch();

break;

}} catch (jedi***ception e) finally

}return retflag;

}}

/**

* created by liuyang on 2017/4/20.

*/public

class

service

public

void

seckill()

}

public

class

threada

extends

thread

@override

public

void

run()

}public

class

test

}}

public void seckill()

redis分布式鎖 實現秒殺

使用springboot spring data jpa redis實現乙個簡單的後台秒殺程式 pom.xml org.springframework.bootgroupid spring boot starter data redisartifactid dependency controller...

用redis實現分布式鎖

通常部署的服務都是在多台伺服器上,不會只有一台。那麼在分布式環境下,就會遇到共享資源的問題。比如乙個人只能有一條記錄,下次進來就只能修改,而不是再新增。如果只有一台伺服器,可以使用多執行緒下的單例模式來控制,但是分布式下,就不管用了。有三種方式,一是使用資料庫的樂觀鎖,二是redis的鎖,三是zoo...

使用redis分布式鎖實現「茅台」秒殺

分布式鎖就是 控制分布式系統有序的去對共享資源進行操作,通過互斥來保持一致性。舉個大白話一樣的例子 假設共享的資源是一輛共享汽車,這輛車在乙個時間只能有乙個人去駕駛,分布式系統就好比是要駕駛車的人,分布式鎖就是保證這個時間點只能乙個人駕駛,並且只有這一把鑰匙。然而,有好多人要租車,但是要按順序來排隊...