connect(REDIS_HOST, REDIS_PORT, 2.0); if (REDIS_PASSWORD !== null) { self::$instance->auth(REDIS_PASSWORD); } if (REDIS_DB > 0) { self::$instance->select(REDIS_DB); } self::$instance->setOption(\Redis::OPT_SERIALIZER, \Redis::SERIALIZER_JSON); } catch (\RedisException $e) { $errorMsg = $e->getMessage(); error_log('Redis connection failed: ' . $errorMsg); http_response_code(500); echo json_encode(['success' => false, 'message' => 'cache_error', 'error' => $errorMsg]); exit; } catch (\Exception $e) { $errorMsg = $e->getMessage(); error_log('Unexpected error in Redis: ' . $errorMsg); http_response_code(500); echo json_encode(['success' => false, 'message' => 'cache_error', 'error' => $errorMsg]); exit; } } public static function getInstance(): \Redis { if (self::$instance === null) { new self(); } return self::$instance; } private function __clone() {} public function __wakeup() { throw new \Exception("Cannot unserialize singleton"); } }