2015-07-20 177 views
0

我用以下code对Redis的锁定和释放StackExchange.Redis LockTake及锁定释放

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

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

的键(在数据库中锁定的唯一名称)