namespace WIDESEAWCS_RedisService.Lock
{
public interface IDistributedLockService
{
///
/// 获取分布式锁
///
/// 锁的Key
/// 锁过期时间
/// 等待获取锁的超时时间
/// 锁Token,释放时需要传入;获取失败返回null
string? AcquireLock(string lockKey, TimeSpan expiry, TimeSpan? waitTimeout = null);
///
/// 释放分布式锁
///
bool ReleaseLock(string lockKey, string lockToken);
///
/// 续期锁
///
bool RenewLock(string lockKey, string lockToken, TimeSpan expiry);
///
/// 使用锁执行操作
///
T? ExecuteWithLock(string lockKey, TimeSpan expiry, Func action, TimeSpan? waitTimeout = null);
///
/// 使用锁执行操作(无返回值)
///
bool ExecuteWithLock(string lockKey, TimeSpan expiry, Action action, TimeSpan? waitTimeout = null);
}
}