野狐禅版本, golang示例

func AcquireLock(lock_key string, lock_value string, timeout uint32) bool {
     // SET lock_key lock_value NX PX ttl_with_seconds 
     // return is_success
}

func ReleaseLock(lock_key string) {
     // DELETE lock_key 
}

func Process(lock_key string, lock_value string, timeout uint32) {
    if  AcquireLock(lock_key, lock_value, timeout) {
        // 无论业务逻辑执行是否成功, 一定释放锁
        defer func() {
          ReleaseLock(lock_key)
        }()

        // do something
        // maybe process over lock TTL
    }
}

看上去很完美的实现. But Really Good Job?

惨案是如何发生的

这里完全没考虑如果业务执行超过TTL时间, 导致锁被自动释放的情况 >_< !!!!!!!!!!!!