第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Redis鎖:Redisson

Redisson 中实现了 Redis 分布式锁,且支持单点模式和集群模式。

单机原理:

利用redis的setnx命令不存在才能设置成功。于是多个进程并发去设置同一个 key,只有一个进程能设置成功。

SET key value NX PX 30000

  • Key 是业务id,value是全局唯一的随机数。这个随机数在释放锁时保证释放锁操作的安全性。如果没有全局唯一的随机数的保证,client_1释放锁的请求没有及时到达 Redis,锁定时间超时租约到期,释放了这个锁;client_2申请到了这个锁;client_1释放锁的请求到达,将client_2解锁;Client_3也获得了锁,冲突。释放锁的时候需要对比value值,防止释放了不同时间点的锁

  • SET NX 命令只会在 key 不存在的时候给 key 赋值,PX 命令表示锁过期时间,防止线程挂了引发的死锁问题

  • 当资源被锁定超过这个时间时,锁将自动释放。其他客户端获得锁,引起争用问题。解决方案是新建一个检查线程去检查客户端是否正常,如果正常则更新锁的超时时间

集群原理:

Redlock 算法:

1. 获取当前Unix时间T1,以毫秒为单位。
  1. 使用相同的key和value从各个redis节点获取锁,客户端应该设置一个锁超时时间请求超时时间,请求超时时间应该小于锁超时时间。比如锁超时时间为10秒,则请求超时时间应该在5-50毫秒之间。

  2. 获取当前Unix时间T2,以毫秒为单位。T2-T1就是获取锁花费的时间T。

  3. 如果超过半数的Redis节点都取到锁并且T小于锁超时时间,则锁获取成功,锁真正生效的时间为 锁超时时间 -T

  4. 如果获取锁失败,客户端应该在所有的Redis实例上进行解锁


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消