reader = $reader; $this->writer = $writer; } public static function key(string $linkedId): string { return self::KEY_PREFIX . $linkedId; } public function get(?string $linkedId): ?string { if (!is_string($linkedId) || $linkedId === '') { return null; } try { $reader = $this->reader ?? static fn (string $key) => Redis::get($key); $queueNumber = $reader(self::key($linkedId)); return is_string($queueNumber) && $queueNumber !== '' ? $queueNumber : null; } catch (\Throwable $e) { Log::warning('First queue cache read failed', [ 'linkedid' => $linkedId, 'error' => $e->getMessage(), ]); return null; } } public function remember(?string $linkedId, string $queueNumber): void { if (!is_string($linkedId) || $linkedId === '' || $queueNumber === '') { return; } try { $writer = $this->writer ?? static function (string $key, string $value): void { Redis::set($key, $value, 'EX', self::TTL_SECONDS, 'NX'); }; $writer(self::key($linkedId), $queueNumber); } catch (\Throwable $e) { Log::warning('First queue cache write failed', [ 'linkedid' => $linkedId, 'queue_number' => $queueNumber, 'error' => $e->getMessage(), ]); } } }