getRedis(); try { $serialize = serialize($consumer); if (!$redis->lock($hash = md5($serialize))) { return false; } $isExists = $redis->zRevRank($key, $serialize); if ($isExists !== null) { $redis->zAdd($key, $score, $serialize); } return $redis->unlink($hash); } finally { $redis->release(); } } /** * @param $key * @param string $consumer * @return false|int * @throws ComponentException * @throws Exception */ protected function pop($key, string $consumer) { $redis = Snowflake::app()->getRedis(); try { if (!$redis->lock($hash = md5($consumer))) { return false; } $isExists = $redis->zRevRank($key, $consumer); if ($isExists === null) { return $redis->unlink($hash); } $redis->zRem($key, $consumer); return $redis->unlink($hash); } finally { $redis->release(); } } }