Start here. This is the direct spoken answer to practice first.
Why this question matters
A Redis lock is a time-bounded lease, not a durable mutex. Expiry, pauses, partitions, failover, and ownership races mean correctness still needs an idempotent operation, database constraint, or another durable boundary.
I would use a Redis lock only for a short, bounded coordination problem where duplicate work is undesirable but the system can tolerate lease expiry behavior. The lock needs an expiration so it does not stay forever if the holder crashes. The worker also needs to know that the lock can expire before work finishes, so the protected operation should still be idempotent or guarded by a stronger source-of-truth rule.