Set ConnectionMultiplexer as static

This commit is contained in:
Haiping Chen 2024-08-21 14:48:12 -05:00
parent 3bce2c5a59
commit ff01d149b0

View file

@ -6,7 +6,7 @@ namespace BotSharp.Core.Infrastructures;
public class DistributedLocker
{
private readonly BotSharpDatabaseSettings _settings;
private ConnectionMultiplexer connection;
private static ConnectionMultiplexer connection;
public DistributedLocker(BotSharpDatabaseSettings settings)
{
@ -15,13 +15,10 @@ public class DistributedLocker
public async Task<T> Lock<T>(string resource, Func<Task<T>> action, int timeoutInSeconds = 30)
{
await ConnectToRedis();
var timeout = TimeSpan.FromSeconds(timeoutInSeconds);
if (connection == null)
{
connection = await ConnectionMultiplexer.ConnectAsync(_settings.Redis);
}
var @lock = new RedisDistributedLock(resource, connection.GetDatabase());
await using (var handle = await @lock.TryAcquireAsync(timeout))
{
@ -36,12 +33,9 @@ public class DistributedLocker
public async Task<T> Lock<T>(string resource, Func<T> action, int timeoutInSeconds = 30)
{
var timeout = TimeSpan.FromSeconds(timeoutInSeconds);
await ConnectToRedis();
if (connection == null)
{
connection = await ConnectionMultiplexer.ConnectAsync(_settings.Redis);
}
var timeout = TimeSpan.FromSeconds(timeoutInSeconds);
var @lock = new RedisDistributedLock(resource, connection.GetDatabase());
await using (var handle = await @lock.TryAcquireAsync(timeout))
@ -54,4 +48,12 @@ public class DistributedLocker
return action();
}
}
private async Task ConnectToRedis()
{
if (connection == null)
{
connection = await ConnectionMultiplexer.ConnectAsync(_settings.Redis);
}
}
}