【发布时间】:2021-10-21 15:14:49
【问题描述】:
我正在使用 RedLock.net 库进行资源锁定。为了锁定资源,我使用 RedLockFactory.CreateLockAsync。
public async Task<IRedLock> RedLockFactory.CreateLockAsync(string resource,
TimeSpan expiryTime,
TimeSpan waitTime,
TimeSpan retryTime,
CancellationToken? cancellationToken = null)
我了解此方法将尝试通过不断重试每个retryTime 来获取waitTime 的锁。但是我不明白expiryTime 的正确值是多少。
一旦获得了锁,它将一直保留到锁为Disposed,这与expiryTime无关。换句话说,即使expirtyTime 设置为 5 秒,如果锁仅在 10 秒后被释放,那么锁将保持 10 秒。
在许多示例中,使用 30 的值没有任何解释。
我已经用 0 的值进行了测试。根本没有获得锁。
我已经用 5 毫秒的值进行了测试。获取锁并保留直到释放。
那么如何为expiryTime参数选择合适的值呢?在我看来,这个参数是不必要的,任何非零正值都可以。
【问题讨论】:
标签: redlock.net redlock