public void TestThatSequenceLockedUnlockedAndLockedAgainIsSuccessfull() { var dlm = new Redlock(ConnectionMultiplexer.Connect("127.0.0.1:6379")); Lock lockObject; Lock newLockObject; var locked = dlm.Lock(resourceName, new TimeSpan(0, 0, 10), out lockObject); Assert.IsTrue(locked, "Unable to get lock"); dlm.Unlock(lockObject); locked = dlm.Lock(resourceName, new TimeSpan(0, 0, 10), out newLockObject); Assert.IsTrue(locked, "Unable to get lock"); dlm.Unlock(newLockObject); }
public override void UnLock() { if (_lockObject != null) { _dlm.Unlock(_lockObject); } }
public override void UnLock(string resourceName) { if (_lockObject != null) { _dlm.Unlock(_lockObject); } }
private static void Main(string[] args) { //127.0.0.1:6379:IP,端口 //password:Redis密码 //connectTimeout:连接超时时间,这里设置的是1000毫秒 //connectRetry:重试连接次数 //syncTimeout:同步操作默认超时时间 //defaultDatabase:默认数据库 //<add key="RedisTest" WriteServer="127.0.0.1:6379,password=123456,connectTimeout=1000,connectRetry=1,syncTimeout=1000,defaultDatabase=15"/> var resourceName = "key"; var dlm = new Redlock.CSharp.Redlock( ConnectionMultiplexer.Connect("127.0.0.1:6379,connectTimeout=1000,connectRetry=1,syncTimeout=1000,defaultDatabase=15"), ConnectionMultiplexer.Connect("192.168.100.142:6379,connectTimeout=1000,connectRetry=1,syncTimeout=1000,defaultDatabase=15")); Lock locked = null; try { locked = dlm.Lock( resourceName, new TimeSpan(0, 30, 10) ); } finally { if (locked != null && locked.IsLock) { dlm.Unlock(locked); } } }
public void TestWhenLockedAnotherLockRequestIsRejected() { var dlm = new Redlock(ConnectionMultiplexer.Connect("127.0.0.1:6379")); Lock lockObject; Lock newLockObject; var locked = dlm.Lock(resourceName, new TimeSpan(0, 0, 10), out lockObject); Assert.IsTrue(locked, "Unable to get lock"); locked = dlm.Lock(resourceName, new TimeSpan(0, 0, 10), out newLockObject); Assert.IsFalse(locked, "lock taken, it shouldn't be possible"); dlm.Unlock(lockObject); }
public void Dispose() { _redlock.Unlock(_locker); }