码迷,mamicode.com
首页 > 其他好文 > 详细

redis分布式锁

时间:2020-07-29 15:31:57      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:一致性   数据   zookeeper   epoll   epo   分布   就是   必须   加锁   

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分布式锁

标签:一致性   数据   zookeeper   epoll   epo   分布   就是   必须   加锁   

原文地址:https://www.cnblogs.com/zzq919/p/13396522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!