This commit is contained in:
2020-09-11 01:25:43 +08:00
parent 67ca557961
commit 9df3b56ec0
2 changed files with 43 additions and 25 deletions
+24 -16
View File
@@ -29,15 +29,19 @@ abstract class Queue extends Component implements Relyon
protected function push(string $key, Consumer $consumer, $score = 0)
{
$redis = Snowflake::app()->getRedis();
$serialize = serialize($consumer);
if (!$redis->lock($hash = md5($serialize))) {
return false;
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();
}
$isExists = $redis->zRevRank($key, $serialize);
if ($isExists !== null) {
$redis->zAdd($key, $score, $serialize);
}
return $redis->unlink($hash);
}
@@ -50,17 +54,21 @@ abstract class Queue extends Component implements Relyon
*/
protected function pop($key, Consumer $consumer)
{
$serialize = serialize($consumer);
$redis = Snowflake::app()->getRedis();
if (!$redis->lock($hash = md5($serialize))) {
return false;
}
$isExists = $redis->zRevRank($key, $serialize);
if ($isExists === null) {
try {
$serialize = serialize($consumer);
if (!$redis->lock($hash = md5($serialize))) {
return false;
}
$isExists = $redis->zRevRank($key, $serialize);
if ($isExists === null) {
return $redis->unlink($hash);
}
$redis->zRem($key, $serialize);
return $redis->unlink($hash);
} finally {
$redis->release();
}
$redis->zRem($key, $serialize);
return $redis->unlink($hash);
}