prefix}{$domainId}:{$slug}" : "{$this->prefix}{$slug}"; } /** @param array $data */ public function put(string $slug, array $data, ?int $domainId = null): void { $key = $this->key($slug, $domainId); Redis::hMSet($key, $data); Redis::expire($key, 86400); } /** @return array|null */ public function get(string $slug, ?int $domainId = null): ?array { $key = $this->key($slug, $domainId); $data = Redis::hGetAll($key); return empty($data) ? null : $data; } public function forget(string $slug, ?int $domainId = null): void { Redis::del($this->key($slug, $domainId)); } public function warmFromLink(Link $link): void { $this->put($link->slug, [ 'target' => $link->target_url, 'status' => $link->status, 'rules_json' => $link->rules ? json_encode($link->rules) : '', 'expires_at' => $link->expires_at !== null ? (string) $link->expires_at->timestamp : '', 'workspace_id' => (string) $link->workspace_id, 'pixel_config' => $link->pixel_config ? json_encode($link->pixel_config) : '', 'link_id' => (string) $link->id, ], $link->domain_id); } }