问下为什么解锁使用了异步强制解锁?有什么必要使用它嘛?使用异步强制解锁有什么优点嘛?相比于正常的同步解锁
zyc12345 opened this issue · 1 comments
zyc12345 commented
问下为什么解锁使用了异步强制解锁?有什么必要使用它嘛?使用异步强制解锁有什么优点嘛?相比于正常的同步解锁
klboke commented
没啥区别,我们最后还是get结果了。解锁逻辑更直接点,直接删除key值了,具体逻辑可以参看下面的lua代码
forceUnlockAsync:
"if (redis.call('del', KEYS[1]) == 1) then "
"redis.call('publish', KEYS[2], ARGV[1]); "
"return 1 "
"else "
"return 0 "
"end",
unlockInnerAsync:
"if (redis.call('exists', KEYS[1]) == 0) then " +
"redis.call('publish', KEYS[2], ARGV[1]); " +
"return 1; " +
"end;" +
"if (redis.call('hexists', KEYS[1], ARGV[3]) == 0) then " +
"return nil;" +
"end; " +
"local counter = redis.call('hincrby', KEYS[1], ARGV[3], -1); " +
"if (counter > 0) then " +
"redis.call('pexpire', KEYS[1], ARGV[2]); " +
"return 0; " +
"else " +
"redis.call('del', KEYS[1]); " +
"redis.call('publish', KEYS[2], ARGV[1]); " +
"return 1; "+
"end; " +
"return nil;",