redis分布式锁

Posted 我是张某某

tags:

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

1.什么是分布式

分布式不是指必须把应用程序部署到不同的服务器

只要存在应用程序跨JVM就是分布式

2.什么时候使用分布式锁

应用之间存在共享资源的竞争就要使用分布式锁

3.什么时候使用分布式事务

需要保证数据库中的数据的一致性的时候,就需要使用分布式事务

4.都有哪些分布式锁

4.1. 数据库-乐观锁

4.2. redis分布式锁(单线程)-互斥锁(epoll模型 因为是单线程,所有吞吐量不会达到太高)

4.3. zookeeper分布式锁--互斥锁 共享锁(不了解 没用过)

5.redis分布式锁遇到的问题

5.1 死锁问题:加锁后出现异常没有来得及释放锁或者释放锁的时候出现异常

解决方案:1.对锁加上过期时间,2加锁后的代码加上try catch finally(finally里释放锁)

5.2 线程B的锁被线程A删除了:线程A拿到锁,但是执行时间过长导致线程A锁过期了,线程B进来拿到锁,这时候线程A执行完释放锁释放的就是线程B的

解决方案:保证线程自己创建的锁由自己释放,每次创建锁的时候保存线程的唯一标识

 

 

//笔记未完待续

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

redis 分布式锁

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

分布式锁用zookeeper还是redis好

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

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

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