我使用以下代码为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(数据库中锁的唯一名称)