我使用以下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。
知道可能会发生什么吗?
答案 0 :(得分:1)
锁定密钥必须是唯一的。您可能在代码中使用与缓存键相同的锁定键。来自https://stackoverflow.com/a/25138164:
密钥(数据库中锁的唯一名称)