利用redis实现分布式锁(1)——准备知识
利用redis实现分布式锁(一)——准备知识
一、先来看看什么是分布式锁?
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。
二、使用分布式锁要满足的几个条件:
a) 系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现);
b) 共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL);
c) 同步访问(即有很多个进程同事访问同一个共享资源。没有同步访问,谁管你资源竞争不竞争)。
以上3个条件必须同时满足,缺一不可。
三、如何利用redis实现一个分布式锁?
实现原理:Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。redis的SETNX命令可以方便的实现分布式锁。
redis的几个命令的使用方式可以参考:http://guwq2014.iteye.com/blog/2365263
本文参考:http://www.cnblogs.com/0201zcr/p/5942748.html