分布式锁
2018-12-20 09:33:41来源:博客园 阅读 ()
当项目使用分布式架构时,就会有可能出现客户端数据重复提交的情况
比如,当你向服务器发起一个借贷命令时,如果手速够快,可能会向后台的两个拨款服务器发起同一个请求
此时, 如果不进行处理, 后台可能会向用户拨款两次, 但是用户只有一次的借钱记录.
这时, 也是用到了常用sso登录时的技术Redis, 前台向后端发起某个请求时, 拿到请求的这台服务器会去访问Redis 使用Redis的setnx方法
如:
setnx user1 lock
这样如果该user1是第一次存入redis ,会返回1 相当于拿到这个请求处理的锁,可以继续执行, 如果不是第一次,则会返回0,说明没有拿到处理的锁
这个时候,此台服务器就没有必要继续执行. 这就起到了分布式锁的作用
而且,本身redis是单线程的,在一个客户端登录之后,其他客户端无法登陆和操作.这就有了安全保证
同时, 如果项目在拿到这个分布试锁的时候,服务器宕机了, 但是redis中已经存在了相应的key, 那么程序就会出现思索的情况,因此,在创建这个锁的时候
最好给他设定一个超时时间, 如多这段时间内,这个锁没有被销毁,则会自动销毁.
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 项目经理说这种代码必须重构,我同意了,这代码是写的是有多 2020-06-11
- 聊聊微服务架构及分布式事务解决方案! 2020-06-10
- 作为一个面试官,我想问问你Redis分布式锁怎么搞? 2020-06-10
- eclipse下创建Maven项目(包含webapp目录结构) 2020-06-09
- 阿里巴巴26个屌炸天的开源项目,你知道几个? 2020-06-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash