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 分布式锁的主要内容,如果未能解决你的问题,请参考以下文章