redis-lock compare to other distributed lock, it has the following advantages
- introduce redis PSUBSCRIBE, not need to cycle call redis, to acquire the lock has been unlock
- add the local memory lock to decrease redis qps
- add AddExpire func, in case task is not finished, and the lock is invalid.