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

怎么做素材设计网站成都做小程序的公司排名

怎么做素材设计网站,成都做小程序的公司排名,wordpress 获取栏目名称,网站简繁体转换.rar在SpringBoot中利用Redis实现互斥锁 基本知识 前提条件#xff0c;有一个能够在Springboot中使用Redis的项目#xff0c;或者能够直接开也行 为什么要实现互斥锁#xff1a;当我们利用Redis存储热点数据时#xff0c;突然就过期失效或者被删除了#xff0c;导致大量请求同…在SpringBoot中利用Redis实现互斥锁 基本知识 前提条件有一个能够在Springboot中使用Redis的项目或者能够直接开也行 为什么要实现互斥锁当我们利用Redis存储热点数据时突然就过期失效或者被删除了导致大量请求同时访问数据库增加了数据库的负载。为减轻数据库的负载我们利用互斥锁。 业务的一个逻辑图流程 核心思路相较于原来从缓存中查询不到数据后直接查询数据库而言现在的方案是 进行查询之后如果从缓存没有查询到数据则进行互斥锁的获取获取互斥锁后判断是否获得到了锁如果没有获得到则休眠过一会再进行尝试直到获取到锁为止这个尝试要重新从Redis再次尝试获取数据可能别的锁已经获取到了才能进行查询 如果获取到了锁的线程再去进行查询查询后将数据写入redis再释放锁返回数据利用互斥锁就能保证只有一个线程去执行操作数据库的逻辑防止缓存击穿 操作锁的核心思路就是利用redis的setnx方法来表示获取锁该方法含义是redis中如果没有这个key则插入成功返回1 具体实现 设置锁删除锁 /*** 根据name对特定的数据进行锁* param name* return*/ public boolean setLock(String name) {return Boolean.TRUE.equals(redisTemplate.opsForValue().setIfAbsent(name, true, 10, TimeUnit.SECONDS)); }public boolean releaseLock(String name) {return Boolean.TRUE.equals(redisTemplate.delete(name)); }具体流程实现 GetMapping(/getOneByLock/{sequence}) public BaseResponseSentences getOneByLock(PathVariable long sequence) {// 从redis中查信息String name test:redis:sentences: sequence;Sentences sentence (Sentences) redisTemplate.opsForValue().get(name);// 命中返回数据if(sentence ! null ){redisTemplate.expire(name,2,TimeUnit.MINUTES);return ResultUtils.success(sentence);}// 未命中获取锁String LOCK_NAME test:redis:lock: sequence;boolean lock redisTemplate.opsForValue().get(LOCK_NAME) ! null (boolean) redisTemplate.opsForValue().get(LOCK_NAME);//如果lock等于false 那么就可以获取到锁并且锁住不许其他人操作if(!lock){return ResultUtils.success(setLockReleaseLockAboutSentence(LOCK_NAME,name,sequence));}// 没有获取到锁 休眠一段时间并且反复检测redis中的数据是否存在或者锁是否释放while(true){try {Thread.sleep(1000);log.error(等待中);} catch (InterruptedException e) {throw new RuntimeException(e);}// 检查是否存在值sentence (Sentences) redisTemplate.opsForValue().get(name);if(sentence ! null){return ResultUtils.success(sentence);}boolean checkAgain (boolean) redisTemplate.opsForValue().get(LOCK_NAME);if(!checkAgain){sentence setLockReleaseLockAboutSentence(LOCK_NAME,name,sequence);}return ResultUtils.success(sentence);} }public Sentences setLockReleaseLockAboutSentence(String LOCK_NAME,String redisName, long sequence){// 设置 锁值 为truesetLock(LOCK_NAME);// 并且从数据中查取数据Sentences sentence sentencesService.getById(sequence);// 这里为了明显不能抢锁设置一个睡眠时间try {log.error(休眠中);Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);} // 把数据写入RedisredisTemplate.opsForValue().set(redisName,sentence,2, TimeUnit.MINUTES);// 释放锁releaseLock(LOCK_NAME);// 返回数据return sentence; }代码说明在这个代码中为了演示明显获取锁中延迟3s竞争锁会延迟1s下面的演示初始时Redis中没有数据只能去数据库中取数据但是设置了互斥锁所以只能够一个线程进入数据库取数据其他只能等待数据得到结果。 结果示意 redis中无数据 结果 最终效果是好的。redis中已存入数据
http://www.hkea.cn/news/14452887/

相关文章:

  • 网站后台用esayui做新华网
  • 郑州网站建设哪家公司便宜网页无法打开如何解决
  • 工作室 网站 备案无锡做网站seo
  • 做百度手机网站优化点珠海微信公众号制作
  • 做网站租用那个服务器好网页制作公司地址
  • 手机网站地址做网站个网站要多少钱
  • 做公司的网站的需求有哪些内容西安SEO网站建设
  • 大型门户网站开发教程网站设计研究方法
  • 杭州 专业网站建设 网络服务北京公司注册核名网站
  • 自己做的网站链接到微信支付界面erp系统哪个品牌最好
  • 网站建设标书模板下载网站开发能自学吗
  • 贵州建设职业技术学院招商网站wordpress去category
  • 易语言编程软件做网站科技特长生包括哪些项目
  • 免费网站建设价格费用登录app
  • 企业建设网站注意点永泰县住房和城乡建设局网站
  • 李青青做网站 公司主要做应用领域可做分析图的地图网站
  • 厚街响应式网站设计网页设计比较优秀的网站
  • 微网站O2O平台平台开发自助网站模板平台
  • 购物网站建设报价基于h5的网站开发
  • 网站建设作业云南网络公司网站建设
  • 创一个网站怎样赚钱网站模板能自己做吗
  • 如何在vps上搭建网站如何将图片生成链接
  • seo网站推广简历网站html5自适应
  • 建设网站需要哪些流程iis7 伪静态 wordpress
  • 皮卡剧网站怎样做东莞寮步
  • 专业的设计网站有哪些内容网站建设广告有哪些平台
  • 中国交通建设监理协会网站制作图片的软件免费
  • 义乌高端网站设计品牌有设计师做的装修效果图的网站
  • 选择seo网站排名优化宁波专业的网站建设
  • 教你学做窗帘的网站林西网站建设优化