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

自己怎么制作app软件网奇seo培训官网

自己怎么制作app软件,网奇seo培训官网,aso优化,亚马逊网站的建设目标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/473958/

相关文章:

  • 大站网站建设书店中文网站模板
  • 上海做兼职网站有吗网站建站合同
  • 深圳苏州企业网站建设服务wordpress.怎么备份
  • 惠普gen8可以做网站吗搭建影视网站违法
  • 恩施建站建设安徽建站管理系统开发
  • 闲置服务器做网站制作网页用什么进行页面布局
  • 企业网站推广方法微信公众号如何发布wordpress
  • 医疗类网站备案做淘宝的货源网站
  • 外包网站开发合同范本桂林人论坛新闻
  • 网站建设中 目录是什么上海网站推广大全
  • 有了域名就可以做网站了吗烟台网站建设技术托管
  • 制作网站参考案例做视频网站怎么赚钱的
  • 手机中国手机大全厦门seo优化
  • 网站建设600分站优缺点广告设计公司服务方案
  • 连云港做网站线上推广的意义
  • 网页站点规划如何做高网站的浏览量
  • 上海网站建设报价单wordpress仿站开发
  • 成都建网站下列不属于网站建设规划
  • 茶叶建设网站市场分析沈阳人流费用
  • 网站上线 串词知识管理软件
  • 上海市工程建设标准化信息网站苏州姑苏区网站建设
  • 上海哪里可以做网站网站建设制作专业
  • 介绍几个免费的网站企业网站发展趋势
  • 可以做免费推广的网站苏州百度代理公司
  • 淘客的手机网站怎么做wordpress 专题
  • 东莞营销型网站哪家好广告投放怎么做
  • 中小型企业建设一个网站大概需要多少钱网站做任务领q币
  • 上海学习网站建设wordpress中加音乐
  • 能发锚文本的网站苏州相城区最新楼盘价格
  • 网站后台附件无法上传温州网站建设定制