如何在 Laravel 5.4 中检查Redis连接的可用性。我试过下面的代码,但用ping行获得异常。我怎么办,如果没有连接Redis而不是做其他事情以避免异常?
无法建立连接,因为目标计算机是主动的 拒绝了。 [TCP://127.0.0.1:6379]
use Redis;
class SocketController extends Controller
{
public function sendMessage(){
$redis = Redis::connection();
if($redis->ping()){
print_r("expression");
}
else{
print_r("expression2");
}
}
}
还试过这个:
$redis = Redis::connection();
try{
$redis->ping();
} catch (Exception $e){
$e->getMessage();
}
但无法捕捉异常
答案 0 :(得分:2)
如果您使用的是 predis ,则它将抛出Predis\Connection\ConnectionException
从服务器读取行时出错。 [tcp://127.0.0.1:6379] <-未连接Redis时
因此,请捕获该Exception,您将获得Redis是否已连接的信息。
use Illuminate\Support\Facades\Redis;
public function redis_test(Request $request){
try{
$redis=Redis::connect('127.0.0.1',3306);
return response('redis working');
}catch(\Predis\Connection\ConnectionException $e){
return response('error connection redis');
}
答案 1 :(得分:0)
确保已安装redis
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install redis-server
要测试您的服务是否正常运行,请使用命令行客户端连接到Redis服务器:
redis-cli
在随后的提示中,键入以下内容测试连接:
ping
您应该看到:
输出
PONG
安装Laravel依赖项
composer require predis/predis
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04
答案 2 :(得分:0)
在构造函数中,您可以像这样检查redis状态连接:
/**
* RedisDirectGeoProximity constructor.
* @throws RedisConnectionException
*/
public function __construct()
{
try
{
$this->redisConnection = Redis::connection('default');
}
catch ( Exception $e )
{
throw new RedisConnectionException([
'message' => trans('messages.redis.fail'),
'code' => ApiErrorCodes::REDIS_CONNECTION_FAIL
]);
}
}
,但您的例外:
namespace App\Exceptions\Redis;
/**
* Class RedisConnectionException
* @package App\Exceptions\Redis
*/
class RedisConnectionException extends \Exception
{
/**
* RedisConnectionException constructor.
* @param array $options
*/
public function __construct(array $options = [])
{
parent::__construct($options);
}
}
答案 3 :(得分:0)
<?php
namespace App\Helpers;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;
class ConnectionChecker
{
public static function isDatabaseReady($connection = null)
{
$isReady = true;
try {
DB::connection($connection)->getPdo();
} catch (\Exception $e) {
$isReady = false;
}
return $isReady;
}
public static function isRedisReady($connection = null)
{
$isReady = true;
try {
$redis = Redis::connection($connection);
$redis->connect();
$redis->disconnect();
} catch (\Exception $e) {
$isReady = false;
}
return $isReady;
}
}
我创建了一个帮助器类来检查redis和数据库连接
答案 4 :(得分:0)
我认为您没有启动 Redis服务器,这就是为什么会出现此错误。
只需下载并安装Redis服务器 要下载服务器,只需redis server install
对于 Windows 64 ,请转到https://github.com/MicrosoftArchive/redis/releases,然后
=>下载 Redis-x64-3.2.100.msi 文件
=>运行并安装
=>然后打开Redis文件夹(它将是已安装的文件夹),然后运行“ redis-server.exe”文件。
=>现在您的Redis服务器已激活
=>您可以通过运行“ redis-cli.exe”文件并输入ping来检查它是否为傍。
答案 5 :(得分:-1)
请尝试使用catch (\Exception $e)
incl。反斜杠