1 redis只保证最终一致性,副本间的数据复制是异步进行(set是写,get是读,redis集群一般是读写分离架构,存在主从同步延迟情况),主从切换之后可能有部分数据没有复制过去的可能会丢失锁的情况,所以强一致性的业务不推荐使用redis,推荐使用zk.
2 redis集群个方法的响应时间比较低,但是随着并发量和业务数据的提升会影响其响应时间,
zookeeper集群,锁原理是使用zk的临时顺序节点,临时顺序节点的生命周期在client与集群的session结束时结束,因此如果某个client节点存在网络问题,与zk集群断开连接,session超过同样会导致锁被错误释放,所以zk也无法保证完全一致
2 zk具有较好的稳定性,响应时间抖动很小,没有出现异常,但是随着并发量和业务数量提升响应时间也会增加
1 zk每次进行锁操作前都要创建若干节点,完成后要释放节点,浪费时间比较长
2 redis只是简单的数据操作,没有上面的问题