diff --git a/options.go b/options.go index 07319b0..bbdd36d 100644 --- a/options.go +++ b/options.go @@ -22,3 +22,10 @@ func WithRedsyncOptions(options ...redsync.Option) LockerOption { locker.options = options } } + +// WithKeyPrefix is a LockerOption for adding a prefix to the lock key +func WithKeyPrefix(prefix string) LockerOption { + return func(locker *redisLocker) { + locker.keyPrefix = prefix + } +} diff --git a/redislock.go b/redislock.go index 0350670..fcea5f2 100644 --- a/redislock.go +++ b/redislock.go @@ -75,10 +75,11 @@ type redisLocker struct { rs *redsync.Redsync options []redsync.Option autoExtendDuration time.Duration + keyPrefix string } func (r *redisLocker) Lock(ctx context.Context, key string) (gocron.Lock, error) { - mu := r.rs.NewMutex(key, r.options...) + mu := r.rs.NewMutex(r.keyPrefix+key, r.options...) err := mu.LockContext(ctx) if err != nil { return nil, ErrFailedToObtainLock