2015-07-20 220 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

的鍵(在數據庫中鎖定的唯一名稱)