网易(13)玩转Redis高性能分布式锁

1、JVM锁:

都拿到1这张票,用的是for循环,就会出现超卖都情况

3W1h  what 

synchronize  右图事例。

线程状态:

就绪  等待   运行     结束

 

javac   a.class  javap -c 

lock:手动进行释放锁

lock.unlock()

tomcat 200-1000

 

JVM中都有锁,解决不了分布式应用场景中都数据问题

每一个都要一个进行锁都下发。

JVM之间不能给共享数据,也会出现超卖的情况。(数据同时从主存中拉取到工作内存中来,卖出3张结果DB中的票数只减少1张)

分布式锁(JVM的锁进行集中处理)


1.表锁   /  乐观锁/悲观锁

2.

3.Redis(性能更好一些):

资源并发有共享资源(数据一致性)都要锁:秒杀、

2、分布式锁:DB  Zookeeper Redis


Redis分布式锁的实现:

setnx:很多人执行setnx

redis :单线程执行,不会出现问题(如果没执行就挂了,没设超时、没有清除等   锁永远不会释放)出现死锁的情况

解决方法:设计过期时间、

锁过期时间,不同的业务所要的时间不同,设计的过期时间也是不固定的。(过期时间问题)

脚本中写的所有命令同时成功或失败。自带原子性

 

开启一个线程,在业务执行完之前进行监视,看是否需要进行续费,一直加时间,设置最大的加时时间。

 

lua脚本可以直接写成String字符串实现调用Redis

效率不是很高。

自旋:自己给自己加时间》

Redisssion:

总结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智达教育‍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值