- 如何避免死锁?
可重入性:setnx方法可以设置过期时间,避免业务操作执行出错,死锁问题导致锁无法释放;
- 如何保证线程A不删掉线程B的锁?
在setnx方法中生一个唯一的值,在删除锁时,判断值,是否与本线程的一致,一致则删除;
- 如何解决过期时间到了,业务还没有执行完?
Redisson实现了watchdog机制,每隔10秒,判断业务还没有执行完,再续10秒;
- 如何解决加锁和删锁的多个操作的原子性问题?
Redis支持执行lua脚本,可以将逻辑写在一个lua脚本中,保证原子性。
可重入性:setnx方法可以设置过期时间,避免业务操作执行出错,死锁问题导致锁无法释放;
在setnx方法中生一个唯一的值,在删除锁时,判断值,是否与本线程的一致,一致则删除;
Redisson实现了watchdog机制,每隔10秒,判断业务还没有执行完,再续10秒;
Redis支持执行lua脚本,可以将逻辑写在一个lua脚本中,保证原子性。