accounts/common/components/Redis/Key.php
ErickSkrauch c0aa78d156 Implemented WebHooks delivery queue.
Completely removed usage of the RabbitMQ. Queue now based on Redis channels.
Worker process now extracted as separate docker container.
Base image upgraded to the 1.8.0 version (PHP 7.2.7 and pcntl extension).
2018-07-08 18:20:19 +03:00

61 lines
1.3 KiB
PHP

<?php
namespace common\components\Redis;
use InvalidArgumentException;
use Yii;
class Key {
private $key;
public function __construct(...$key) {
if (empty($key)) {
throw new InvalidArgumentException('You must specify at least one key.');
}
$this->key = $this->buildKey($key);
}
public function getKey(): string {
return $this->key;
}
public function getValue() {
return Yii::$app->redis->get($this->key);
}
public function setValue($value): self {
Yii::$app->redis->set($this->key, $value);
return $this;
}
public function delete(): self {
Yii::$app->redis->del($this->getKey());
return $this;
}
public function exists(): bool {
return (bool)Yii::$app->redis->exists($this->key);
}
public function expire(int $ttl): self {
Yii::$app->redis->expire($this->key, $ttl);
return $this;
}
public function expireAt(int $unixTimestamp): self {
Yii::$app->redis->expireat($this->key, $unixTimestamp);
return $this;
}
private function buildKey(array $parts): string {
$keyParts = [];
foreach ($parts as $part) {
$keyParts[] = str_replace('_', ':', $part);
}
return implode(':', $keyParts);
}
}