使用redis实现分布式锁
在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下:public Long setnx(final byte[] key, final byte[] value) {
checkIsInMulti();
client.setnx(key, value);
return client.getIntegerReply();
}
它的意思是,设置这个key和value,前提是当前key不存在的情况下,还有一个重要前提,不存在多线程共享一个client,如果设置成功,结果会返回1,如果没有设置成功,结果返回0。
重点关注的地方是client.setnx(key,value), 到redis 的server端实现方法是原语,主要是充分利用到这一点来实现锁机制的,非常巧妙。
实现方式除了redis外还有很多的,例如zookeeper,数据库(充分使用事务的隔离机制来实现)等等,可以补充。
页:
[1]