基于redis的分布式锁
2018-05-17 本文已影响21人
木驴的天空
分布式锁实现方案
- 基于数据库实现分布式锁
- 基于缓存(redis,memcached,tair)实现分布式锁
- 基于Zookeeper实现分布式锁
分布式锁注意的问题
- 客户端在使用锁的过程中可能因为这样或那样的原因掉线,为了防止客户端获取锁之后崩溃,并导致锁一直处于“已被获取”的状态,锁必须带有超时特性,获取锁的进程如果未能在指定的时间内完成操作,那么锁将自动释放。
- 持有锁的进程可能因为执行时间过长,已经获取的锁因为超时而被自动释放,但是该进程本身并不知情,甚至还可能释放掉其他进程的锁(超时之后可能已经由其他进程获得)。
- 在一个进程持有锁过期之后,其他多个进程同时尝试去获取锁,并且都获得了锁。