@@ -14,15 +14,17 @@ namespace WorkflowCore.Providers.Redis.Services
1414 public class RedisLockProvider : IDistributedLockProvider
1515 {
1616 private readonly ILogger _logger ;
17- private readonly string _connectionString ;
17+ private readonly string _connectionString ;
18+ private readonly string _prefix ;
1819 private IConnectionMultiplexer _multiplexer ;
1920 private RedLockFactory _redlockFactory ;
2021 private readonly TimeSpan _lockTimeout = TimeSpan . FromMinutes ( 1 ) ;
2122 private readonly List < IRedLock > ManagedLocks = new List < IRedLock > ( ) ;
2223
23- public RedisLockProvider ( string connectionString , ILoggerFactory logFactory )
24+ public RedisLockProvider ( string connectionString , string prefix , ILoggerFactory logFactory )
2425 {
2526 _connectionString = connectionString ;
27+ _prefix = prefix ;
2628 _logger = logFactory . CreateLogger ( GetType ( ) ) ;
2729 }
2830
@@ -31,7 +33,7 @@ public async Task<bool> AcquireLock(string Id, CancellationToken cancellationTok
3133 if ( _redlockFactory == null )
3234 throw new InvalidOperationException ( ) ;
3335
34- var redLock = await _redlockFactory . CreateLockAsync ( Id , _lockTimeout ) ;
36+ var redLock = await _redlockFactory . CreateLockAsync ( GetResource ( Id ) , _lockTimeout ) ;
3537
3638 if ( redLock . IsAcquired )
3739 {
@@ -50,11 +52,13 @@ public Task ReleaseLock(string Id)
5052 if ( _redlockFactory == null )
5153 throw new InvalidOperationException ( ) ;
5254
55+ var resource = GetResource ( Id ) ;
56+
5357 lock ( ManagedLocks )
5458 {
5559 foreach ( var redLock in ManagedLocks )
5660 {
57- if ( redLock . Resource == Id )
61+ if ( redLock . Resource == resource )
5862 {
5963 redLock . Dispose ( ) ;
6064 ManagedLocks . Remove ( redLock ) ;
@@ -77,7 +81,15 @@ public async Task Stop()
7781 _redlockFactory ? . Dispose ( ) ;
7882 await _multiplexer . CloseAsync ( ) ;
7983 _multiplexer = null ;
80-
84+
85+ }
86+
87+ private string GetResource ( string key )
88+ {
89+ if ( string . IsNullOrEmpty ( _prefix ) )
90+ return key ;
91+
92+ return $ "{ _prefix } :{ key } ";
8193 }
8294 }
8395}
0 commit comments