private bool TryAcquireLock(LockData lockData)
{
var db = GetDatabase();
// Don't use IDatabase.LockTake() because we don't use the matching
// LockRelease(). So, avoid any confusion. Besides, LockTake() just
// calls this anyways.
var wasLockAcquired = db.StringSet(lockData.LockKey, lockData.LockValue, lockTimeout, When.NotExists);
if (wasLockAcquired)
{
// It's ok to use Set() instead of Add() because the lock in
// Redis will cause other clients to wait.
acquiredLocks.Set(lockData.Key, lockData, absoluteExpiration: DateTime.UtcNow.Add(lockTimeout));
}
return wasLockAcquired;
}