server-master/srcs/PhoenixLib.DAL.Redis/Locks/RedisLockService.cs
2026-02-10 18:21:30 +01:00

20 lines
No EOL
691 B
C#

using System.Threading.Tasks;
using Foundatio.Caching;
namespace PhoenixLib.DAL.Redis.Locks
{
public class RedisLockService : ILockService
{
private readonly ICacheClient _database;
public RedisLockService(ICacheClient database) => _database = database;
public async Task<IScopedLock> TryAcquireScopedLock(string key) => new RedisScopedLock(key, this, await TryAcquireLock(key));
public async Task<bool> IsLocked(string key) => await _database.ExistsAsync(key);
public Task<bool> TryAcquireLock(string key) => _database.AddAsync(key, 1.ToString());
public Task<bool> TryFreeLock(string key) => _database.RemoveAsync(key);
}
}