基于redis的分布式锁

分布式锁实现方案

  • 基于数据库实现分布式锁
  • 基于缓存(redis,memcached,tair)实现分布式锁
  • 基于Zookeeper实现分布式锁

分布式锁注意的问题

  • 客户端在使用锁的过程中可能因为这样或那样的原因掉线,为了防止客户端获取锁之后崩溃,并导致锁一直处于“已被获取”的状态,锁必须带有超时特性,获取锁的进程如果未能在指定的时间内完成操作,那么锁将自动释放。
  • 持有锁的进程可能因为执行时间过长,已经获取的锁因为超时而被自动释放,但是该进程本身并不知情,甚至还可能释放掉其他进程的锁(超时之后可能已经由其他进程获得)。
  • 在一个进程持有锁过期之后,其他多个进程同时尝试去获取锁,并且都获得了锁。

参考文献

redis官方分布式锁实现推荐--包含各种语言的实现
分布式锁原理及实现方式

你可能感兴趣的:(基于redis的分布式锁)