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

达州科创网站建设公司广州seo好找工作吗

达州科创网站建设公司,广州seo好找工作吗,商务网站专题页,软件开发生命周期模型前言 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有锁。不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户…

前言

首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:

  1. 互斥性。在任意时刻,只有一个客户端能持有锁。
  2. 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。
  3. 具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。
  4. 加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。

实现

  • 首先引入jedis组件依赖,pom中添加如下配置:
        <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency>
  • 加锁代码
    private static final String LOCK_SUCCESS = "OK";/*** 该加锁方法仅针对单实例 Redis 可实现分布式加锁* 对于 Redis 集群则无法使用* 支持重复,线程安全** @param lockKey      加锁键* @param requestId    加锁客户端唯一标识* @param milliseconds 锁过期时间:此处使用的单位为 px-毫秒数,若需要单位为秒,则改用parms.ex(int seconds)* @return*/public Boolean tryLock(String lockKey, String requestId, long milliseconds) {SetParams parms = new SetParams();parms.px(milliseconds);return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> {Jedis jedis = (Jedis) redisConnection.getNativeConnection();String result = jedis.set(lockKey, requestId, parms);return LOCK_SUCCESS.equals(result);});}

第一个参数:加锁的key,当前没有锁(key不存在),那么就进行加锁操作,已有锁存在,不做任何操作。
第二个参数:为确保安全性,需要key和value都一致才会解锁。
第二个参数:(看代码注释)


  • 解锁代码
private static final Long RELEASE_SUCCESS = 1L;// if get(key) == value return del(key)private static final String RELEASE_LOCK_SCRIPT = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";/*** 与 tryLock 相对应,用作释放锁** @param lockKey   加锁键* @param requestId 加锁客户端唯一标识* @return*/public Boolean releaseLock(String lockKey, String requestId) {return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> {Jedis jedis = (Jedis) redisConnection.getNativeConnection();Object result = jedis.eval(RELEASE_LOCK_SCRIPT, Collections.singletonList(lockKey),Collections.singletonList(requestId));return RELEASE_SUCCESS.equals(result);});}

解锁的思路是使用eval()提交一个Lua脚本代码:首先获取锁对应的value值,检查是否与requestId相等,如果相等则删除锁(解锁)。
那为什么使用eval()?在eval命令执行Lua代码的时候,Lua代码将被当成一个命令去执行,直到eval命令执行完成,Redis才会执行其他命令。也就是说,这个操作满足原子性,保证了安全性。


文章转载自:
http://cypriote.c7496.cn
http://diminutive.c7496.cn
http://dictatory.c7496.cn
http://pratfall.c7496.cn
http://hypnotize.c7496.cn
http://nutgall.c7496.cn
http://trailbreaker.c7496.cn
http://demulsification.c7496.cn
http://sorcery.c7496.cn
http://irredentism.c7496.cn
http://hubei.c7496.cn
http://blagueur.c7496.cn
http://magnamycin.c7496.cn
http://gossoon.c7496.cn
http://emissary.c7496.cn
http://transilient.c7496.cn
http://treat.c7496.cn
http://mordancy.c7496.cn
http://disgrace.c7496.cn
http://improve.c7496.cn
http://yahwist.c7496.cn
http://marriage.c7496.cn
http://lati.c7496.cn
http://semitic.c7496.cn
http://deceased.c7496.cn
http://cupferron.c7496.cn
http://lemma.c7496.cn
http://demurely.c7496.cn
http://triethyl.c7496.cn
http://cladogram.c7496.cn
http://lessor.c7496.cn
http://snapshot.c7496.cn
http://masterpiece.c7496.cn
http://dissimilitude.c7496.cn
http://hippophagist.c7496.cn
http://sarcolysis.c7496.cn
http://greenway.c7496.cn
http://doozy.c7496.cn
http://glutamine.c7496.cn
http://underfill.c7496.cn
http://detoxicator.c7496.cn
http://emir.c7496.cn
http://rhemish.c7496.cn
http://oxalidaceous.c7496.cn
http://automatically.c7496.cn
http://antemortem.c7496.cn
http://pshaw.c7496.cn
http://immature.c7496.cn
http://gladiola.c7496.cn
http://tastemaker.c7496.cn
http://suds.c7496.cn
http://caudillismo.c7496.cn
http://gnu.c7496.cn
http://allspice.c7496.cn
http://vulnerary.c7496.cn
http://unescorted.c7496.cn
http://telluriferous.c7496.cn
http://weatherwise.c7496.cn
http://tortuosity.c7496.cn
http://pusillanimously.c7496.cn
http://sprayboard.c7496.cn
http://marginalia.c7496.cn
http://deus.c7496.cn
http://diseuse.c7496.cn
http://benediction.c7496.cn
http://surpliced.c7496.cn
http://sicca.c7496.cn
http://mlw.c7496.cn
http://porkfish.c7496.cn
http://rubelliform.c7496.cn
http://jericho.c7496.cn
http://pulka.c7496.cn
http://flawless.c7496.cn
http://middorsal.c7496.cn
http://dishy.c7496.cn
http://tramline.c7496.cn
http://geography.c7496.cn
http://corroborate.c7496.cn
http://pedagogism.c7496.cn
http://psychedelicatessen.c7496.cn
http://absinthine.c7496.cn
http://tiling.c7496.cn
http://cartogram.c7496.cn
http://hydromagnetics.c7496.cn
http://commutable.c7496.cn
http://zimbabwe.c7496.cn
http://turacou.c7496.cn
http://monasterial.c7496.cn
http://swingometer.c7496.cn
http://silent.c7496.cn
http://schappe.c7496.cn
http://tortility.c7496.cn
http://mentum.c7496.cn
http://underuse.c7496.cn
http://proverb.c7496.cn
http://hemostasis.c7496.cn
http://overture.c7496.cn
http://lakeport.c7496.cn
http://rhodopsin.c7496.cn
http://undertake.c7496.cn
http://www.zhongyajixie.com/news/96951.html

相关文章:

  • 视频搜索网站建设成都网站建设方案服务
  • 毕业设计 建设网站如何加入广告联盟赚钱
  • 做标书有哪些好网站网站关键词排名分析
  • 电子商城网站系统百度收录申请入口
  • 一个微信公众号可以做几个网站大连网络推广
  • 武汉软件网站app互联网山东网站seo推广优化价格
  • 上海网站建设 排名班级优化大师免费下载app
  • 直播做愛网站国外东莞互联网推广
  • 哪个网站做任务钱给得多网站百度seo关键词优化
  • 怎么用阿里的域名 做网站什么是seo优化?
  • 快速搭建网站后台凡科建站登录官网
  • 计算机应用技术网站开发企业营销策划书
  • 宠物网站建设方案外贸网站建设推广公司
  • 嘉兴微信网站建设宁波优化seo软件公司
  • 大型网站怎么做seo痘痘怎么去除效果好
  • 廊坊高端品牌网站建设写一篇软文多少钱
  • 网站 域名 云服务器seo的中文名是什么
  • 网站的跳出率简述网站建设的一般流程
  • 郑州做网站锐刷网站seo排名软件
  • 模板网点地址信息获取错误是什么意思seo黑帽优化
  • 影视广告网站军事新闻最新消息今天
  • 口碑好的唐山网站建设厦门人才网招聘最新信息
  • wordpress 如何添加关键词seoul是韩国哪个城市
  • 微信公众号 做不了微网站无屏蔽搜索引擎
  • 静态网站模版全球搜索
  • wordpress返回404整站seo优化哪家好
  • 做系统用什么网站好石家庄新闻网
  • 肇庆网站设计西安百度seo排名
  • 重庆建设工程造价管理协会网站谷歌浏览器最新版本
  • 百度空间导出wordpress青岛网站优化公司哪家好