/**
  * Recover an abandoned lock
  * @param RedisClient $redis
  * @param  mixed $key Item to lock
  * @param null $ttl
  * @return bool Was the lock acquired?
  */
 protected function recover(RedisClient $redis, $key, $ttl = null)
 {
     if (($lockTimeout = $redis->get($key)) > time()) {
         return false;
     }
     $expire = $this->expire_time($ttl);
     $currentTimeout = $redis->getset($key, $expire);
     if ($currentTimeout != $lockTimeout) {
         return false;
     }
     return new Lock($key, $expire, $redis);
 }