栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分布式锁概述

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分布式锁概述

  分布式锁简介:

在同一个JVM内部,大家往往采用synchronized或者L ock的方式来解决多线程间的安全问题,但是在分布式架构下,在JVM之间,那么就需要一种更加高级的锁机制, 来处理跨JVM进程之间的线程安全问题,解决方案就是:使用分布式锁。

 

Redis分布式锁原理:

Redis分布式锁机制,主要借助setnx和expire两个命令完成

setnx:

当key不存在,将key设置为value ,存在不做任何操作,返回0

expire:

设置key过期时间

加锁的问题

setnx成功,expire失败。如果没有手动释放,那么这个锁永远被占用,其他线程永远也抢不到锁。

解决方案:

1、使用set的命令时,同时设置过期时间,命令set lock "1234" EX 100 NX

2、使用lua脚本,将加锁的命令放在lua脚本中原子性的执行

Redisson

Redisson加锁原理:

加锁:

1.判断有没有“DISL OCK”

2.如果没有,设置UUID:1=1

3.设置它的过期时间

锁重入:

1.KEY和字段都存在,锁重入

2.执行命令incrby UUID:1 1

3.结果: DISLOCK: {UUID:1 2}

锁互斥:

1.客户端2进入

2.判断有KEY,没有字段

3.返回过期时间

4.客户端2自旋等待

Watch dog自动延期

分段锁

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号