gevent friendly redis lock with extensive tests. thread-safe