当前位置: 七九推 > IT编程>开发语言>Java > 分布式锁

分布式锁

2023年01月25日 Java 我要评论
当项目使用分布式架构时,就会有可能出现客户端数据重复提交的情况  比如,当你向服务器发起一个借贷命令时,如果手速够快,可能会向后台的两个拨款服务器发起同一个请求此时, 如果不进行处理, 后台可能会向用

当项目使用分布式架构时,就会有可能出现客户端数据重复提交的情况

  比如,当你向服务器发起一个借贷命令时,如果手速够快,可能会向后台的两个拨款服务器发起同一个请求

此时, 如果不进行处理, 后台可能会向用户拨款两次, 但是用户只有一次的借钱记录. 

 

这时, 也是用到了常用sso登录时的技术redis, 前台向后端发起某个请求时, 拿到请求的这台服务器会去访问redis 使用redis的setnx方法

如:

setnx  user1 lock

这样如果该user1是第一次存入redis ,会返回1  相当于拿到这个请求处理的锁,可以继续执行,  如果不是第一次,则会返回0,说明没有拿到处理的锁

这个时候,此台服务器就没有必要继续执行. 这就起到了分布式锁的作用

 

而且,本身redis是单线程的,在一个客户端登录之后,其他客户端无法登陆和操作.这就有了安全保证

 

同时, 如果项目在拿到这个分布试锁的时候,服务器宕机了, 但是redis中已经存在了相应的key, 那么程序就会出现思索的情况,因此,在创建这个锁的时候

最好给他设定一个超时时间, 如多这段时间内,这个锁没有被销毁,则会自动销毁.

(0)
打赏 微信扫一扫 微信扫一扫

相关文章:

  • 死磕 java同步系列之JMM(Java Memory Model)

    简介java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了java程序在各种平台下对内存的访问都能达到一致的效果。硬件内存模型在正式讲解j…

    2023年01月24日 开发语言
  • 多线程通信的三大法器,你真的会用吗?

    多线程通信的三大法器,你真的会用吗?

    wait, notify, notifyall 是多线程之间通信最重要的 3 个方法,今天,栈长给大家普及一下它们的知识要点及应用实战。定义wait:让持有该对... [阅读全文]
  • Java单例模式下的MongoDB数据库操作工具类

    Java单例模式下的MongoDB数据库操作工具类

    本文实例讲述了java单例模式下的mongodb数据库操作工具类。分享给大家供大家参考,具体如下:我经常对mongodb进行一些基础操作,将这些常用操作合并到一... [阅读全文]
  • 大专生自学Java到找到工作的经过

    大专生自学Java到找到工作的经过

    刚到大三时前面两年荒废了 什么都没学到所以打算自学个编程 自己对java非常感兴趣 就打算自学java 但是一开始看书 有很多看不懂 非常苦恼 也打算过去培训 ... [阅读全文]
  • 荐
                                                        基于业务描述语言BDL的需求方法论

    荐 基于业务描述语言BDL的需求方法论

    业务需求需求重要吗?业务需求重要吗?为什么重要?它有多重要?需求的切入点在哪里?业务架构与业务需求之间是什么关系?业务需求与软件需求之间又是什么关系?软件需求与... [阅读全文]
  • 过滤器模式(Filter Pattern)

    过滤器模式(Filter Pattern)

    过滤器模式:过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组... [阅读全文]

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

发表评论

验证码:
Copyright © 2017-2023  七九推 保留所有权利. 粤ICP备17035492号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com