Redis之分布式锁

84 阅读1分钟

1、使用setnx

如果存在则设置值,如果不存在则返回,两者返回不同的结果,加锁结束后删除。 问题:当加完锁后,服务异常,那么无法进行解锁操作。

2、使用setnx ex

使用setex nx ex 的方式(支持两个原子操作),当key超时时自动被删除。 问题:如果执行时间大于锁的时间,那么会导致同步问题

3、使用守护线程

给string设置一个过期时间,并且拥有一个守护线程,这个守护线程检测服务器是否宕机,如果没有宕机就可以给锁续期。