分布式锁的实现和应用场景_redis分布式锁释放锁

分布式锁的实现和应用场景_redis分布式锁释放锁分布式锁为了解决分布式场景下全局加锁的问题。在单体项目中可以使用synchronize完成对于不同线程之间的资源争抢问题。但是在分布式场景下,synchronize只能对其中一个项目进行资源控制,进程之间的资源增强仍然无法解距。换言之,可以将分布式锁理解为对于整个分不是系统的synchronize。通常使用独立与线程之外的工具控制资源,如redis及框架redisson。1.传统单体架构业务流程synchronized(this){ /** 业务逻辑扣减库存 */}以上代码对于单体架构可

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

分布式锁为了解决分布式场景下全局加锁的问题。在单体项目中可以使用synchronize完成对于不同线程之间的资源争抢问题。但是在分布式场景下,synchronize只能对其中一个项目进行资源控制,进程之间的资源增强仍然无法解距。换言之,可以将分布式锁理解为对于整个分不是系统的synchronize。通常使用独立与线程之外的工具控制资源,如redis及框架redisson。


1.传统单体架构业务流程

synchronized(this){ 
   
	/** 业务逻辑扣减库存 */
}

以上代码对于单体架构可以控制库存问题


2.使用redis的SetNX命令

//业务开始前
// 使用setnx在redis中设置一个key-value
if(如果设置成功){ 
   
	/** 业务逻辑扣减库存 */
}
// 删除redis中的key

上诉代码为简单的代码逻辑,在实际中可以使用try-finally的方式或自动过期时间保证锁一定会被删除。


也可使用redisson框架代替方法2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196209.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Eclipse配置android开发环境详解「建议收藏」

    本文引自https://blog.csdn.net/dr_neo/article/details/49870587(只是做一个笔记,若原博主不同意请通知与我)第一步、安装JDK;第二步、安装Eclipse;第三步、下载并安装AndroidSDK;第四步、为Eclipse安装ADT插件 下面详细介绍。第一步、安装JDKAndroid开发工具要求必须安装JDK(JavaDevelopmentKit)…

    2022年4月17日
  • 【JavaScript】支持js代码的博客有…

    【JavaScript】支持js代码的博客有…原文地址:支持js代码的博客有哪些?作者:liancaiping1、支持js代码的博客谷歌博客,雅虎奇摩,博客大巴,jimdo博客,和讯博客要等级(230000分).2、现在新浪博客怎么才能有效的使用js呢在新浪博客放广告,现在网络上主要流行的两种方法,这里尽量简单化的给您说明。把广告以代码形式放到免费空间里,然后链接到你的博客教程如下:(1).登陆goog

    2022年7月14日
  • C语言system参数字符串[通俗易懂]

    C语言system参数字符串[通俗易懂]C语言把字符串作为system()函数的参数

    2022年9月13日
  • 基于LDC1000的自动循迹小车

    基于LDC1000的自动循迹小车大三上学期课程设计的题目选了做小车,需要使用的是TI公司的LDC1000或者LDC1314,题目如下:首先选择做这道题是因为之前做小车比较熟悉,仔细分析一下其实也就是缺个传感器,其他的该有的都有了只需要稍作修改,于是乎开始了这一段有意思的旅途。将整个系统分为采集、处理、控制三部分。第一部分为采集模块,采用LDC1000采集赛道信息并转化为数字信号传输给数据处理模块。

    2022年6月7日
  • Redis学习之Redis配置文件详解[通俗易懂]

    Redis学习之Redis配置文件详解[通俗易懂]Redis配置文件详解redis.conf文件,我们启动redis的时候就是通过这个配置文件单位配置文件unit单位对大小写不敏感包含include就是启动的时候可以包含其他的配置文件,就好比学习jsp的include静态包含网络networkbind127.0.0.1#绑定的ip,允许指定的rdis客户端才能连接protectedyes#开启保护模式port6379#端口通用generaldaemonizeyes#默认是no,改为y

    2022年6月6日
  • VC++ CopyFile函数使用方法

    VC++ CopyFile函数使用方法

    2021年11月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号