目前有很多成熟的缓存产品,包括Redis,memcached等。这里以Redis为例来分析下使用缓存实现分布式锁的方案。主要的实现方式是使用Jedis.setNX方法来实现。以上实现方式同样存在几个问题:
public boolean trylock(String key) {
ResultCode code = jedis.setNX(key, "This is a Lock."); if (ResultCode.SUCCESS.equals(code)) return true; else return false;
} public boolean unlock(String key){
ldbTairManager.invalid(NAMESPACE, key);
}
算法的步骤如下:
总结: