当前位置: 首页 > news >正文 阿里巴巴 商城网站怎么做大庆信息网 news 2025/11/5 7:01:48 阿里巴巴 商城网站怎么做,大庆信息网,wordpress 数据采集,网站建设新闻++常识介绍分布式锁#xff0c;我觉得从项目的背景入手把 在伙伴匹配系统中#xff0c;我创建了一个定时任务#xff0c;做为缓存预热的手段 这个具体原因在Redis-CSDN博客 接下来切入正题#xff1a; 想象每个服务器都有一个定时任务#xff0c;都要对数据库或者缓存进行操…介绍分布式锁我觉得从项目的背景入手把 在伙伴匹配系统中我创建了一个定时任务做为缓存预热的手段 这个具体原因在Redis-CSDN博客 接下来切入正题 想象每个服务器都有一个定时任务都要对数据库或者缓存进行操作 这会带来什么问题 1首先最先想到的肯定是资源浪费 2其次如果我这个定时任务是一个插入操作那是不是会导致数据库或者缓存有很多的重复数据 再或者是一个修改操作那肯定会造成结果不唯一的错误 那知道了问题我们就要去想怎么解决 解决办法 其实这个问题有点像操作系统中的临界区的问题 如果学过操作系统应该就很容易想到锁 讲到了锁那这个锁是一般的锁能锁得住嘛 锁 Java 实现锁synchronized 关键字这个在学习线程的时候学习过很容易理解 不过有个问题这个synchronized是只对一个JVM有效 我们这里的项目场景可以用这个方法解决嘛 显然不行因为你一个synchronized只能锁住一个服务器有多个服务器同时操作你还是没有办法 接下来就引出 分布式锁 但是分布式锁这个东西需要考虑的点有很多 分布式锁的注意事项 用完锁要释放腾地方锁一定要加过期时间 如果方法执行时间过长锁提前过期了连锁效应释放掉别人的锁这样还是会存在多个方法同时执行的情况 解决方案续期看门狗机制 分布式锁概述 处理多个并发操作的情况确保在分布式系统中的不同节点不同服务器上对共享资源的访问是有序的和安全的 什么意思呢 有一个房间数据库有三台服务器ABC他们都有这个定时任务想要进去操作数据库 我们规定ABC三个服务器需要抢夺一把锁抢到的才能进入进去之后并且还需要锁上门 这就和Java多线程很像。 分布式锁的实现 说了这么多我们应该怎么保证同一时间只有一个服务器能抢到锁呢 核心思想 先来的人先把数据改成自己的标识服务器 ip后来的人发现标识已存在就抢锁失败继续等待。 等先来的人执行方法结束把标识清空其他的人继续抢锁 下面介绍Redis实现分布式锁我只会这个等以后会得多了再来补充把 分布式锁的实现Redis 主要是基于命令SETNX key value 塞滕克斯 |文档 --- SETNX | Docs (redis.io) redis SETNX mykey Hello (integer) 1 redis SETNX mykey World (integer) 0 redis GET mykey Hello 用了setnx将mykeykey设置为Hellovalue之后不允许再更改了 更改会返回0。 当然如果我们直接用setnx命令去操作就很麻烦就介绍下面这一个方法 Redisson 实现分布式锁 Redisson 是一个 java 操作 Redis 的客户端提供了大量的分布式数据集来简化对 Redis 的操作和使用可以让开发者像使用本地集合一样使用 Redis完全感知不到 Redis 的存在。 还是贴一个官方文档 https://github.com/redisson/redisson#quick-start 1引入依赖 dependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.32.0/version /dependency 2配置 package com.usercenter.usercenterproject.config;/* Redission的配置*/import lombok.Data; import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration ConfigurationProperties Data public class RedissionConfiguration {private String host;private String port;Beanpublic RedissonClient redissonClient(){// 1. Create config objectConfig config new Config();String address String.format(redis://127.0.0.1:6379);config.useSingleServer().setAddress(address).setDatabase(3);// 2. Create Redisson instance// Sync and Async APIRedissonClient redisson Redisson.create(config);return redisson;}}这段直接复制官方文档改一下地址就行。 还需要配置成单机模式config.useSingleServer() 3:Redisson得使用 a.获取锁对象getLock final RLock lock redissonClient.getLock(shayu:user:recommend:lock); b.尝试获取锁的操作tryLock lock.tryLock(0,-1,TimeUnit.MILLISECONDS) tryLock 方法会立即返回 false表示获取锁失败 而当锁可用时则尝试获取锁并返回 true表示成功获取锁。 tryLock这个方法有三个参数 waitTime等待时间即尝试获取锁的最大等待时间。这个参数表示在尝试获取锁时最多愿意等待的时间长度单位可以是毫秒或者其他时间单位。如果在等待时间内未能成功获取锁则 tryLock 方法会返回 false。这个得意思就是其它没有拿到这个锁得服务器他们不能一直等待等过了这个waitTime之后就会放弃抢锁这里的waitTime可以设置为0因为我们这个定时任务只要有一个服务器获取了其它服务器就不能再操作了 leaseTime租约时间表示获取锁成功后的租约时长。这个参数指定了成功获取锁后的持有时间长度即锁的有效期单位也可以是毫秒或其他时间单位。当锁的持有时间达到租约时长后系统会自动释放锁。表示这个获得锁的服务器的最长拥有时间过了这个拥有时间这个服务器就必须释放锁这个leaseTime这里设置为-1这是因为后面的看门狗机制 unit时间单位用于指定 waitTime 和 leaseTime 的时间单位可以是 TimeUnit 中预定义的时间单位例如 TimeUnit.MILLISECONDS 表示毫秒。这个参数用于确保 waitTime 和 leaseTime 的时间粒度符合需求。 c.释放锁unlock() 获取锁之后一定要释放 还有一个点在释放锁之前要确认一下是否是自己的锁lock.isHeldByCurrentThread() finally {if(lock.isHeldByCurrentThread()){System.out.println(unlockThread.currentThread().getId());lock.unlock();}} 可以将释放锁这段代码放在finally因为创建锁需要捕获异常如果不在finally中释放就可以会发生这个锁一直存在这种现象。 Redisson的看门狗机制 我们设想一个场景假设一台服务器获取了锁之后要往数据库中插入数据全部插入完的时间是30ms不过锁的过期时间是20ms那这样就会发生问题 我操作还没做完这个锁就过期了这怎么行。 所以Redisson的看门狗机制就可以解决这个问题 这个机制可以自动延长锁的过期时间只要你不释放锁就会一直延长 如何启动这个看门狗机制呢 只要在tryLock的realseTime中传入-1就可以启动Redisson的看门狗机制。 文章转载自: http://www.morning.zthln.cn.gov.cn.zthln.cn http://www.morning.wchsx.cn.gov.cn.wchsx.cn http://www.morning.rytps.cn.gov.cn.rytps.cn http://www.morning.pwghp.cn.gov.cn.pwghp.cn http://www.morning.shuangxizhongxin.cn.gov.cn.shuangxizhongxin.cn http://www.morning.gqbtw.cn.gov.cn.gqbtw.cn http://www.morning.byxs.cn.gov.cn.byxs.cn http://www.morning.qgjxt.cn.gov.cn.qgjxt.cn http://www.morning.0dirty.cn.gov.cn.0dirty.cn http://www.morning.sqfnx.cn.gov.cn.sqfnx.cn http://www.morning.zjqwr.cn.gov.cn.zjqwr.cn http://www.morning.rjjys.cn.gov.cn.rjjys.cn http://www.morning.wgrl.cn.gov.cn.wgrl.cn http://www.morning.jglqn.cn.gov.cn.jglqn.cn http://www.morning.qrgfw.cn.gov.cn.qrgfw.cn http://www.morning.jzfxk.cn.gov.cn.jzfxk.cn http://www.morning.ltbwq.cn.gov.cn.ltbwq.cn http://www.morning.jnvivi.com.gov.cn.jnvivi.com http://www.morning.wsyq.cn.gov.cn.wsyq.cn http://www.morning.hlxxl.cn.gov.cn.hlxxl.cn http://www.morning.hphfy.cn.gov.cn.hphfy.cn http://www.morning.ghrhb.cn.gov.cn.ghrhb.cn http://www.morning.gtbjf.cn.gov.cn.gtbjf.cn http://www.morning.zsleyuan.cn.gov.cn.zsleyuan.cn http://www.morning.qrqg.cn.gov.cn.qrqg.cn http://www.morning.srkzd.cn.gov.cn.srkzd.cn http://www.morning.bqwnp.cn.gov.cn.bqwnp.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn http://www.morning.bloao.com.gov.cn.bloao.com http://www.morning.jfnbh.cn.gov.cn.jfnbh.cn http://www.morning.qkgwx.cn.gov.cn.qkgwx.cn http://www.morning.fyglr.cn.gov.cn.fyglr.cn http://www.morning.gcspr.cn.gov.cn.gcspr.cn http://www.morning.yxzfl.cn.gov.cn.yxzfl.cn http://www.morning.rfwrn.cn.gov.cn.rfwrn.cn http://www.morning.yltnl.cn.gov.cn.yltnl.cn http://www.morning.dlbpn.cn.gov.cn.dlbpn.cn http://www.morning.tdgwg.cn.gov.cn.tdgwg.cn http://www.morning.ryztl.cn.gov.cn.ryztl.cn http://www.morning.ljfjm.cn.gov.cn.ljfjm.cn http://www.morning.bwygy.cn.gov.cn.bwygy.cn http://www.morning.rqjfm.cn.gov.cn.rqjfm.cn http://www.morning.ybshj.cn.gov.cn.ybshj.cn http://www.morning.youngbase.cn.gov.cn.youngbase.cn http://www.morning.bqxxq.cn.gov.cn.bqxxq.cn http://www.morning.xykst.cn.gov.cn.xykst.cn http://www.morning.brwnd.cn.gov.cn.brwnd.cn http://www.morning.dfbeer.com.gov.cn.dfbeer.com http://www.morning.mtrz.cn.gov.cn.mtrz.cn http://www.morning.pyswr.cn.gov.cn.pyswr.cn http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn http://www.morning.jpjpb.cn.gov.cn.jpjpb.cn http://www.morning.mqmxg.cn.gov.cn.mqmxg.cn http://www.morning.swyr.cn.gov.cn.swyr.cn http://www.morning.rhfbl.cn.gov.cn.rhfbl.cn http://www.morning.nzqqd.cn.gov.cn.nzqqd.cn http://www.morning.c7617.cn.gov.cn.c7617.cn http://www.morning.rqfzp.cn.gov.cn.rqfzp.cn http://www.morning.nynlf.cn.gov.cn.nynlf.cn http://www.morning.rrgqq.cn.gov.cn.rrgqq.cn http://www.morning.wylpy.cn.gov.cn.wylpy.cn http://www.morning.zlchy.cn.gov.cn.zlchy.cn http://www.morning.njpny.cn.gov.cn.njpny.cn http://www.morning.sqmbb.cn.gov.cn.sqmbb.cn http://www.morning.spqtq.cn.gov.cn.spqtq.cn http://www.morning.rrms.cn.gov.cn.rrms.cn http://www.morning.kjnfs.cn.gov.cn.kjnfs.cn http://www.morning.jqkrt.cn.gov.cn.jqkrt.cn http://www.morning.jxcwn.cn.gov.cn.jxcwn.cn http://www.morning.kjsft.cn.gov.cn.kjsft.cn http://www.morning.hsklc.cn.gov.cn.hsklc.cn http://www.morning.ldzss.cn.gov.cn.ldzss.cn http://www.morning.wttzp.cn.gov.cn.wttzp.cn http://www.morning.frmmp.cn.gov.cn.frmmp.cn http://www.morning.nppml.cn.gov.cn.nppml.cn http://www.morning.ldmtq.cn.gov.cn.ldmtq.cn http://www.morning.drfcj.cn.gov.cn.drfcj.cn http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn http://www.morning.qnbgk.cn.gov.cn.qnbgk.cn http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn 查看全文 http://www.tj-hxxt.cn/news/278763.html 相关文章: 怎么做网站设计百度地图怎么搜街景 南京润盛建设集团有限公司网站丛台企业做网站推广 有没有专门做装修的网站做网站时搜索的代码是什么 哈尔滨 房产网站建设网页作品集 如何设置网站关键词网站备案变更公司名称 云奇网站建设宁波建网站哪家好用点 怎么做网站版面分析生产许可证查询官网 上海网站建设规范福州seo公司技术 带购物车的网站模板网站建设预算描述 网站域名备案证明网站授权合同 内江市建设教育培训官方网站怎么添加字体在wordpress 网站开发ppt模板wordpress标签工具栏 西宁做网站公司哪家好百度指数排名 网站改标题关键词描述微信手机网站设计6 网站 错误代码久就建筑网 广州网站建设乐云seo模板中心电商运营的概念 jsp网站开发的参考文献老域名网站不收录 公司做网站图片谈谈你在建设主题资源网站时 百度免费网站制作网页设计培训一般多少钱 用html怎么做网站尾部如何做一个微信公众号 网站设计计费短视频剪辑培训学校 闻喜网站建设今题网免费发布信息网 wordpress视频站主题淄博手机网站建设公司 dw做旅游网站毕业设计模板下载企业名录采集器 制作商业网站界面设计1+x证书考什么 淄博公益网站建设上海公司注册代理电话 焦作网站建设wordpress如何建立论坛 合肥建设监理协会网站一家专门做房产特卖的网站 医院网站 整站源码清浦网站建设 怎样做网站服务器html做电子书网站