StackExchange.Redis LockTake&锁定释放

时间:2015-07-20 23:13:05

标签: stackexchange.redis

我使用以下code进行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。

知道可能会发生什么吗?

1 个答案:

答案 0 :(得分:1)

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

  

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