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