StackExchange.Redis LockTake & Lock Release



我使用以下代码为redis锁和释放

var key = "test-x";
RedisValue token = (RedisValue) Guid.NewGuid().ToString();
if(db.LockTake(key, token, duration)) {
    try {
        // you have the lock do work
    } finally {
        db.LockRelease(key, token);
    }
}
我问题:

在单元测试中,我调用了这个方法2次。第一次总是工作,但第二次我想获得锁上这个特定的钥匙,它不工作。从我的理解db。LockRelease应该释放锁,使其对第二个请求可用。我确实注意到db。LockRelease返回false

你知道会发生什么吗?

锁键必须是唯一的。您可能在代码中使用与缓存键相同的锁键。从https://stackoverflow.com/a/25138164:

key(数据库中锁的唯一名称)

最新更新