@Farrien
Tell me who

Как проверить связь с Redis в PHP?

Только-только начал использовать Redis. Сделал много-чего, что кэшируется. Вроде как полагается, ключ-значение в redis есть, выдаем это, или берем из БД, записываем в redis и выдаем. Использую Predis как оболочку для PHP. Но вот не могу сделать так, чтобы redis-часть игнорировалась, если redis на сервере отсутствует (он пока отсутствует на основном сервере, но обновить код скоро надо).

Predis\Autoloader::register();
		self::$redis = new Predis\Client([
			'scheme' => 'tcp',
			'host' => REDIS_HOST ?: '127.0.0.1',
			'port' => REDIS_PORT ?: '6379',
		]);
		try {
			self::$redis->ping();
			self::$available = true;
		} catch (\Exception $e) {
			self::$available = false;
		}


В итоге получаю ошибку всегда
Fatal error: in C:\OSPanel\domains\gene.com\vendor\predis\predis\src\Connection\AbstractConnection.php on line 155


На всякий случай положил все в свою оболочку для работы с ней.
Полный класс тут
namespace Superior;

use \Predis as Predis;

class Redis {
	static public $redis;
	static private $available = false;
	
	static public function k($key) {
		if (self::$redis) {
			return self::$redis->get($key);
		}
		return false;
	}
	
	static public function ss($key, $value, $time = 604800) {
		if (self::$redis) {
			self::$redis->set($key, $value);
			self::$redis->expire($key, $time);
		}
	}
	
	static public function SetUp() {
		Predis\Autoloader::register();
		self::$redis = new Predis\Client([
			'scheme' => 'tcp',
			'host' => REDIS_HOST ?: '127.0.0.1',
			'port' => REDIS_PORT ?: '6379',
		]);
		try {
			self::$redis->ping();
			self::$available = true;
		} catch (\Exception $e) {
			self::$available = false;
		}
	}
}
  • Вопрос задан
  • 943 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы