ConnectToRedisAsync
This commit is contained in:
parent
d4ccc53a6e
commit
040bd7e406
|
|
@ -15,7 +15,7 @@ public class DistributedLocker
|
|||
|
||||
public async Task<T> Lock<T>(string resource, Func<Task<T>> action, int timeoutInSeconds = 30)
|
||||
{
|
||||
await ConnectToRedis();
|
||||
await ConnectToRedisAsync();
|
||||
|
||||
var timeout = TimeSpan.FromSeconds(timeoutInSeconds);
|
||||
|
||||
|
|
@ -31,25 +31,35 @@ public class DistributedLocker
|
|||
}
|
||||
}
|
||||
|
||||
public async Task Lock(string resource, Action action, int timeoutInSeconds = 30)
|
||||
public void Lock(string resource, Action action, int timeoutInSeconds = 30)
|
||||
{
|
||||
await ConnectToRedis();
|
||||
ConnectToRedis();
|
||||
|
||||
var timeout = TimeSpan.FromSeconds(timeoutInSeconds);
|
||||
|
||||
var @lock = new RedisDistributedLock(resource, connection.GetDatabase());
|
||||
await using (var handle = await @lock.TryAcquireAsync(timeout))
|
||||
using (var handle = @lock.TryAcquire(timeout))
|
||||
{
|
||||
if (handle == null)
|
||||
{
|
||||
Serilog.Log.Logger.Error($"Acquire lock for {resource} failed due to after {timeout}s timeout.");
|
||||
|
||||
}
|
||||
action();
|
||||
else
|
||||
{
|
||||
action();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ConnectToRedis()
|
||||
private void ConnectToRedis()
|
||||
{
|
||||
if (connection == null)
|
||||
{
|
||||
connection = ConnectionMultiplexer.Connect(_settings.Redis);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ConnectToRedisAsync()
|
||||
{
|
||||
if (connection == null)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue