redis实现分布式锁缺陷
# setnx实现分布式锁缺陷
重入问题:可重入锁的意义在于防止死锁;
如HashTable,其方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,如果是不可重入的,则死锁;
**不可重试:**当线程在获得锁失败后,应该能再次尝试获得锁;
**超时释放:**锁超时释放虽然避免死锁,但如果是业务执行耗时较长,也会导致锁释放,存在安全隐患
**主从一致性:**如果Redis提供了主从集群,当我们向集群写数据时,主机需要异步的将数据同步给从机,而万一在同步过去之前,主机宕机了,就会出现死锁问题