Laravel:如何检查Redis可用性?

时间:2017-08-09 06:14:37

标签: redis laravel-5.4

如何在 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();
        }

但无法捕捉异常

6 个答案:

答案 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

this

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。反斜杠