当前位置: 首页 > wzjs >正文

光谷中心城建设投资有限公司网站wordpress拖动实现

光谷中心城建设投资有限公司网站,wordpress拖动实现,百度大数据,三亚网站建设费用加锁原理 # 如果锁不存在 if (redis.call(exists, KEYS[1]) 0) then# hash结构,锁名称为key,线程唯一标识为itemKey,itemValue为一个计数器。支持相同客户端线程可重入,每次加锁计数器1.redis.call(hincrby, KEYS[1], ARGV[2], 1);# 设置过期时间redis.call(pexpi…

加锁原理

image-20250307162041799

# 如果锁不存在 
if (redis.call('exists', KEYS[1]) == 0) then# hash结构,锁名称为key,线程唯一标识为itemKey,itemValue为一个计数器。支持相同客户端线程可重入,每次加锁计数器+1.redis.call('hincrby', KEYS[1], ARGV[2], 1);# 设置过期时间redis.call('pexpire', KEYS[1], ARGV[1]);# 成功获取锁返回nullreturn nil;
end ;
#如果是当前线程占有分布式锁,允许重入锁
if (redis.call('hexists', KEYS[1], ARGV[2]) == 1) then# 将锁重入计数器自增1.redis.call('hincrby', KEYS[1], ARGV[2], 1);# 设置过期时间redis.call('pexpire', KEYS[1], ARGV[1]);# 成功获取锁返回nullreturn nil;
end ;
#如果获取不到锁,返回锁剩余过期时间,方便后续代码设置等待超时时间
return redis.call('pttl', KEYS[1]);

在分布式锁中,采用hash结构用来存储锁,其中大key表示表示这把锁是否存在,用小key表示当前这把锁被哪个线程持有。HINCRBY 可以在 KEYS[1](哈希键)不存在时直接创建并执行递增操作。

KEYS[1] : 锁名称

ARGV[1]: 锁失效时间

ARGV[2]: uuid + “:” + threadId; 锁的小key,客户端唯一标识

image-20250307163702718

image.png

图1处:判断获取锁是否等待(waitTime)超时,如果等待超时则直接返回获取锁失败。

图2处:如果等待未超时,则尝试订阅解锁channel。

图3处:获取ReissonLockEntry(获取成功表示订阅成功),超时时长设置为当前剩余的等待时间(waitTime)。 如果获取ReissonLockEntry超时,终止并取消订阅解锁消息channel,获取锁失败。

直到获取锁成功或者超时失败。 解锁消息广播给所有锁竞争的客户端,收到解锁消息后,客户端会有一个线程去重新竞争锁。当有解锁消息到达时,不需要恢复所有挂起的线程一起去竞争分布式锁,只需要唤醒一个线程去和集群中其它节点抢夺就可以了。这样好处是显而易见的,避免了大量的无效Redis请求,因为锁在集群中同一时刻只会有一个线程能持有。

解锁原理

# 判断锁是否为自己持有,不为自己持有则不允许解锁。
if (redis.call('hexists', KEYS[1], ARGV[3]) == 0) thenreturn nil;
end ;
# 由于支持可重入,所以这里需要判断是否完全解锁,每解一次锁重入计数器减1.
local counter = redis.call('hincrby', KEYS[1], ARGV[3], -1);
if (counter > 0) then# 如果锁还没有完全解除,则延长锁租用时间redis.call('pexpire', KEYS[1], ARGV[2]);return 0;
else# 删除锁redis.call('del', KEYS[1]);# 广播解锁消息redis.call('publish', KEYS[2], ARGV[1]);return 1;
end ;
return nil;

watch dog原理

Redisson 的看门狗机制(WatchDog)是一种自动续期机制,旨在确保任务执行期间锁不会因超时而被误释放

  • 原理:当客户端获取到锁后,Redisson 会启动一个后台定时任务(即看门狗)。在锁的持有期间,看门狗会以默认间隔(10秒)不断地续期,延长锁的过期时间,使锁的默认过期时间始终保持为30秒。这样,只要任务未完成且客户端仍然活跃,锁就不会过期。
  • 默认行为:默认情况下,Redisson 会开启看门狗机制,无需开发者手动配置。如果不想启用看门狗机制,可以在调用 tryLock 时指定 leaseTime 参数。
  • leaseTime设置的影响:如果显式设置 leaseTime(例如通过 tryLock(waitTime, leaseTime, TimeUnit.SECONDS)),看门狗机制将不会启动。锁会在 leaseTime 到期时自动释放。当锁超时时间为 -1 时,而且获取锁成功时,会启动看门狗定时任务自动续锁。

Redisson 中,tryLock(waitTime, leaseTime, TimeUnit.SECONDS) 方法是一个尝试获取分布式锁的非阻塞方法,通过等待和设置锁的租约时间来控制锁的行为。

参数解释

  • waitTime:最大等待时间,即在尝试获取锁时,线程等待的最大时间。如果在这段时间内锁没有被其他线程释放,当前线程会放弃获取锁,返回 false
  • leaseTime:锁的租约时间,即锁的自动释放时间。如果成功获取锁后,线程在 leaseTime 时间内没有手动释放锁,锁将自动失效并释放给其他线程。这个参数用于确保锁不会一直持有,避免死锁。
  • TimeUnit:时间单位,可以设置为秒、毫秒等

img


文章转载自:

http://j6w3fY5t.dbhwh.cn
http://Psn0U5us.dbhwh.cn
http://MSTnFDxb.dbhwh.cn
http://BBFHuaqn.dbhwh.cn
http://SpltrfOM.dbhwh.cn
http://jjjnbHUw.dbhwh.cn
http://GZ3CAZhg.dbhwh.cn
http://DMNAuZhL.dbhwh.cn
http://TtEHp7gJ.dbhwh.cn
http://jy7Gx0Iq.dbhwh.cn
http://9QQEb87F.dbhwh.cn
http://1BcPPwIc.dbhwh.cn
http://kOipe3pl.dbhwh.cn
http://cHTQDNVN.dbhwh.cn
http://LdGVajG7.dbhwh.cn
http://RXfIClbW.dbhwh.cn
http://DFiXUvc2.dbhwh.cn
http://MVwVeqSj.dbhwh.cn
http://8hSRzNxf.dbhwh.cn
http://fxdDzhWW.dbhwh.cn
http://xJORqi49.dbhwh.cn
http://MijP6e4b.dbhwh.cn
http://xf3hBQM7.dbhwh.cn
http://HhYvxkpS.dbhwh.cn
http://E1EFrUw6.dbhwh.cn
http://JTtUyavM.dbhwh.cn
http://XJePardw.dbhwh.cn
http://dYltUvho.dbhwh.cn
http://siE00ERb.dbhwh.cn
http://SZvw0Kdl.dbhwh.cn
http://www.dtcms.com/wzjs/676506.html

相关文章:

  • 怎么建立自己的网站平台多少钱企业网站托管公司
  • 免费注册域名网站百度代理
  • 军事新闻2022网络公司优化关键词
  • 做网站为什么能挣钱创意广告图片及文字解析
  • 网站开发文档怎么写百度快照功能
  • 酒类网站该怎么做wordpress模板云端
  • 做外汇都要看什么网站网站里的搜索怎么做的
  • 找别人做网站网站建设 主机选择
  • 做网站 怎么赚钱网站怎么群发
  • 安徽网站设计wordpress如何调整文章位置
  • 百度推广怎么做的网站中国出口外贸网
  • 网站的空间和域名备案北京智能网站建设哪里好
  • 企业为什么做网站系统工程项目信息查询
  • 合肥网站开发cnfg东莞全域取消住房限购政策
  • 住房城乡建设部网站通报用游戏人物做网站属于侵权吗
  • 高校网站建设制度h5网站开发哪个好
  • php wordpress单本小说网站源码+采集怎样卸载电脑中wordpress
  • 免费推广企业网站电商网站首页
  • 长沙开发网站建筑方案设计收费标准
  • 关于医院建设网站的请示23岁老牌网站
  • 英文网站建设方案详细方案绿派网站建设
  • 自己写代码做网站要什么技术thinkphp 做门户网站
  • 请为hs公司的钻石礼品网站做网络营销沟通策划_预算是20万.如何更新单位网站
  • 广东网站设计公司电话成都小程序开发名录
  • 外卖网站的建设与推广专业做二手房的网站
  • wordpress实名认证西安seo管理
  • html做的网站图片横着摆放汉中做网站公司
  • 香飘飘网站平台建设wordpress菜单导航栏
  • 在工商网站上怎么做电话的变更厦门营销网站制作
  • 网站多域名怎么做广州天河区医院