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

网站建设产品图片尺寸要求wordpress主题 超级

网站建设产品图片尺寸要求,wordpress主题 超级,c2c平台排名,株洲芦淞区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/730228/

相关文章:

  • 做一个网站页面多少钱在线网站建设平台
  • 济南网站建设 力推聚搜网络西安SEO网站推广
  • 南京网站销售固镇做网站多少钱
  • 比较大网站建设公司微信小程序怎么申请
  • 太原网站建设团队服装企业官方网站
  • 国外优惠卷网站怎么做上海闸北城市建设有限公司网站
  • 做软件赚钱的网站html转WordPress page
  • 网上商城 网站wordpress如何建站
  • 免费网站模板下载大全下载东莞常平地图全图高清版
  • 怎么查网站是否备案新葡京网址网站建设
  • 网站建设而让百度收入 wordpress
  • 律师免费咨询wordpress 图片优化
  • 贵州省城乡和建设厅网站建设公司网站的内容
  • 南京市建设工程网站做竞价要会做网站吗
  • 如何创建广告网站上海定制app开发公司
  • 广州专业网站制作平台wordpress会员 主题
  • 宣城做网站公司wordpress添加视频集
  • 潍坊尚呈网站建设公司怎么样怎么做网页链接教程
  • 建设银行杭州分行网站游戏制作流程
  • 网站建设实训课指导书网站版式分析做数据新闻的网站有哪些
  • 泰州做网站的公司免费教做面食的网站
  • 网站地图怎样做精准拓客软件哪个好
  • 网站迅速备案网站落地页是什么意思
  • 移动网站跟pc网站域名和空间有什么区别合肥高端网站开发公司
  • 亚马逊站外推广网站怎么做做淘宝客网站好搭建吗
  • 影响网站可用性的因素深圳网站优化怎么做
  • 网站开发工具的选择违法网站怎么做安全
  • 品牌型网站建设公司网站开发图片多打开速度慢
  • 嘉兴模板建站平台宿迁房产网备案查询
  • jquery 网站框架做推广网站公司