redis 分布式锁

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 分布式锁相关的知识,希望对你有一定的参考价值。

参考技术A 1、一个tomcat是一个进程,其中有很多线程(与有多少个app无关) 

2、一个tomcat启动一个JVM,其中可以有很多APP 

3、一个tomcat中部署的多个app,虽然同处一个JVM里,但是由于无法相互调用,所以也可以认为是分布式的 

synchronized 只是本地锁啊,锁的也只是当前jvm下的对象,在分布式场景下,要用分布式锁。

redis 分布式锁应用场景: 程序不是在一台tomcat(不同jvm)或者一台 tomcat部署的多个由于无法相互调用,synchronized失效,此时操作共享变量,例如库存,就要用分布式锁

简陋版:

解决key 失效时间小于业务执行时间问题

//放到启动类

redisson底层主要是lua脚本

原理图:

解决key 失效时间小于业务执行时间问题

使用lua后的效果:

redis 集群,主redis挂了,此时还没同步到从redis,怎么办?

可以使用zookeeper,它会等 其他的zookeeper同步加速成功再返回成功

redis没办法100%解决这个问题,可以容忍,redis性能远高于zookeeper

解决

1.可以使用redlock(不推荐,不完善):2.使用redission

高并发分布式锁实现:

将数据在redis里分段减库存

以上是关于redis 分布式锁的主要内容,如果未能解决你的问题,请参考以下文章

redis 分布式锁

如何使用redis实现分布式锁功能?

分布式锁用zookeeper还是redis好

Redis分布式锁的原理是啥?如何续期?

分布式锁--Redis秒杀(互斥锁)(一)

Redis | 黑马点评 + 思维导图分布式锁