突破Java面试(42) - Redis & ZooKeeper两种分布式锁实现的优劣
0 Github 1 面试题 一般实现分布式锁都有哪些方式?使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高? 2 考点分析 一般先问问你zk,然后过渡到zk关联的一些问题,比如分布式锁. 因为在分布式系统开发中,分布式锁的使用场景还是很常见的~ 3 Redis分布式锁 官方叫做RedLock算法,是Redis官方支持的分布式锁算法. 这个分布式锁有3个重要的考量点 互斥(只能有一个客户端获取锁) 不能死锁 容错(大部分Redis节点或者这个锁就可以加可以释放) 3.1 最普通的实现方式 创建一个key SET my:lock 随机值 NX PX 30000 NX : 只有key不存在的时候才会设置成功 PX 30000 : 30秒后锁自动释放。别人创建的时候如果发现已经有了就不能加锁了. 释放锁就是删除key