分布式锁

目前实现分布式锁的方式主要有数据库、Redis和Zookeeper三种,本文主要阐述利用Redis的相关命令来实现分布式锁。

一、使用分布式锁要满足的几个条件:

  1. 系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)
  2. 共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL)
  3. 同步访问(即有很多个进程同事访问同一个共享资源。没有同步访问,谁管你资源竞争不竞争)

使用Redis实现分布式锁及其优化

-- 主要是用到了redis的SETNX命令,使锁的操作具有原子性。同时在锁中记录随机串,防止锁先于业务处理结束超时,别人重新申请了锁,误删别人的锁。

 http://mzorro.me/2017/10/25/redis-distributed-lock/

Redlock算法

-- 这个主要在其他基础上解决了分布式非一致性redis情况下的处理方式

http://zhangtielei.com/posts/blog-redlock-reasoning.html

Redlock的算法描述就放在Redis的官网上:

分布式服务框架 Zookeeper -- 管理分布式环境中的数据

https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/

原文地址:https://www.cnblogs.com/aoyihuashao/p/8762401.html