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