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

广安公司网站建设火星建站和八亿建站

广安公司网站建设,火星建站和八亿建站,网站怎么做导航,网站怎么吸引人4.6 分布式锁的原子性问题 更为极端的误删逻辑说明: 线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删…

4.6 分布式锁的原子性问题

更为极端的误删逻辑说明:

线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删除锁,但是此时他的锁到期了,那么此时线程2进来,但是线程1他会接着往后执行,当他卡顿结束后,他直接就会执行删除锁那行代码,相当于条件判断并没有起到作用,这就是删锁时的原子性问题,之所以有这个问题,是因为线程1的拿锁,比锁,删锁,实际上并不是原子性的,我们要防止刚才的情况发生,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.7 Lua脚本解决多条命令原子性问题

Redis提供了Lua脚本功能,在一个脚本中编写多条Redis命令,确保多条命令执行时的原子性。Lua是一种编程语言,它的基本语法大家可以参考网站:https://www.runoob.com/lua/lua-tutorial.html,这里重点介绍Redis提供的调用函数,我们可以使用lua去操作redis,又能保证他的原子性,这样就可以实现拿锁比锁删锁是一个原子性动作了,作为Java程序员这一块并不作一个简单要求,并不需要大家过于精通,只需要知道他有什么作用即可。

这里重点介绍Redis提供的调用函数,语法如下:

redis.call('命令名称', 'key', '其它参数', ...)

例如,我们要执行set name jack,则脚本是这样:

# 执行 set name jack
redis.call('set', 'name', 'jack')

例如,我们要先执行set name Rose,再执行get name,则脚本如下:

# 先执行 set name jack
redis.call('set', 'name', 'Rose')
# 再执行 get name
local name = redis.call('get', 'name')
# 返回
return name

写好脚本以后,需要用Redis命令来调用脚本,调用脚本的常见命令如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

例如,我们要执行 redis.call(‘set’, ‘name’, ‘jack’) 这个脚本,语法如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果脚本中的key、value不想写死,可以作为参数传递。key类型参数会放入KEYS数组,其它参数会放入ARGV数组,在脚本中可以从KEYS和ARGV数组获取这些参数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来我们来回一下我们释放锁的逻辑:

释放锁的业务流程是这样的

​ 1、获取锁中的线程标示

​ 2、判断是否与指定的标示(当前线程标示)一致

​ 3、如果一致则释放锁(删除)

​ 4、如果不一致则什么都不做

如果用Lua脚本来表示则是这样的:

最终我们操作redis的拿锁比锁删锁的lua脚本就会变成这样

-- 这里的 KEYS[1] 就是锁的key,这里的ARGV[1] 就是当前线程标示
-- 获取锁中的标示,判断是否与当前线程标示一致
if (redis.call('GET', KEYS[1]) == ARGV[1]) then-- 一致,则删除锁return redis.call('DEL', KEYS[1])
end
-- 不一致,则直接返回
return 0
http://www.yayakq.cn/news/222737/

相关文章:

  • 网站规划与建设 第2版ppt自建服务器做网站
  • 阿里云网站访问不了怎么办网站后台html模板
  • 在线做ppt的网站有哪些问题东莞哪里有网页设计
  • 怎样设置一个属于自己的网站天元建设有限公司网站
  • 网站开发流程百度文库手机端网站需要多少钱
  • 免费做网站电话低功耗集成主板做网站
  • 酒厂网站模板外贸营销公司
  • 广州网站vi设计报价一般网站建设需要多少钱
  • 免费网站100m平台推广员是做什么的
  • 沧州网站营销推广wordpress 自动图片
  • 个人网站名称有哪些wordpress 修改固定链接 404
  • 建网站和做微信哪个好网络推广网站大全
  • 晋州住房保障建设局网站微帮推广平台有哪些
  • 黑白风格网站专业仿站网站建设
  • 营销型网站建设的特点表现深圳企业做网站
  • asp网站没有数据库连接学技巧网站制作
  • 怡梦姗网站做么深圳建网站兴田德润专业
  • 建设项目立项网站张家界建设网站公司
  • 长沙在线建站模板网站建设解决方案好处
  • 网站建设需要多少个人设计网站官网有哪些
  • 网站建设工作室怎么开wordpress 去掉版权信息
  • 怀集住房和城乡建设部网站模板做的网站 怎么提升排名
  • 确定网站建设目标科技展厅设计方案
  • 做网站的总是有活动怎么回事wordpress 用户注册邮件
  • 济南市城市建设集团网站建设求职网站
  • 网站换dns广西建设职业技术学院网站
  • 虚拟机建设网站南宁本地网站有哪些
  • 嘉兴模板建站平台北京网站建设专业公司
  • 金启网站建设好用的网站管理系统
  • 企业网站建设专业精准乙 鸣远科技用ps做网站是用像素还是毫米