Laravel:如何检查 Redis 可用性?

MTA*_*MTA 4 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");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

也试过这个:

$redis = Redis::connection();
        try{
            $redis->ping();
        } catch (Exception $e){
            $e->getMessage();
        }
Run Code Online (Sandbox Code Playgroud)

但无法捕获异常

Sau*_*try 10

如果您使用的是predis,那么它会抛出Predis\Connection\ConnectionException

从服务器读取行时出错。[tcp://127.0.0.1:6379] <--redis未连接时

所以抓住那个异常,你会得到你的 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');
    }
Run Code Online (Sandbox Code Playgroud)


小智 7

<?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;
    }
}  
Run Code Online (Sandbox Code Playgroud)

我创建了一个辅助类来检查 redis 和 db 连接


sum*_*mit 1

确保redis已安装

$ sudo apt-get update 
$ sudo apt-get upgrade
$ sudo apt-get  install redis-server
Run Code Online (Sandbox Code Playgroud)

要测试您的服务是否正常运行,请使用命令行客户端连接到 Redis 服务器:

redis-cli
Run Code Online (Sandbox Code Playgroud)

在随后的提示中,通过键入以下内容来测试连接:

ping
Run Code Online (Sandbox Code Playgroud)

你应该看到:

输出

PONG
Run Code Online (Sandbox Code Playgroud)

安装 Laravel 依赖项

composer require predis/predis
Run Code Online (Sandbox Code Playgroud)

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04

https://askubuntu.com/questions/868848/how-to-install-redis-on-ubuntu-16-04