diff --git a/kiri-engine/Cache/Redis.php b/kiri-engine/Cache/Redis.php index bb0cb632..cc7a602e 100644 --- a/kiri-engine/Cache/Redis.php +++ b/kiri-engine/Cache/Redis.php @@ -19,6 +19,7 @@ use Kiri\Kiri; use Kiri\Pool\Redis as PoolRedis; use Note\Inject; use Server\Events\OnWorkerExit; +use Swoole\Timer; /** * Class Redis @@ -80,6 +81,25 @@ class Redis extends Component } + /** + * @param $key + * @param int $timeout + * @return bool + */ + public function waite($key, int $timeout = 5): bool + { + $time = time(); + while (!$this->setNx($key, 1)) { + if (time()- $time >= $timeout) { + return FALSE; + } + usleep(1000); + } + $this->expire($key, $timeout); + return TRUE; + } + + /** * @param $key * @param int $timeout