如何检查Redis服务器是否正在运行

89

如何检查 Redis 服务器是否正在运行?

如果它没有在运行,我想要回退到使用数据库。

我正在使用 FuelPHP 框架,因此我可以接受基于此的解决方案,也可以使用标准的 PHP。

7个回答

257
你可以使用命令行来确定Redis是否正在运行:

你可以使用命令行来确定Redis是否正在运行:

redis-cli ping

你应该回来

PONG

这表示Redis正在运行。


它在 Redis 集群上无法工作。 - Manish Chauhan
无论如何,该响应都基于此官方redis参考文档redis-cli - Franco Gil

15
redis-cli -h host_url -p 6379 ping

11

所有的回答都很好,

另一种方法可以是检查默认的REDIS端口是否正在监听

即端口号6379 lsof -i:6379

如果您对上述命令没有任何输出,则表示Redis未运行。


1
如果您正在使用Docker容器来运行它,那么这就是正确的方式。 - kchak

8
你可以尝试获取一个实例 (\Redis::instance()) 并像这样使用它:
try
{
    $redis = \Redis::instance();
    // Do something with Redis.
}
catch(\RedisException $e)
{
    // Fall back to other db usage.
}

最好能够知道redis是否正在运行。这只是在动态检测它的方法。


6
您可以在Linux上使用此命令:
systemctl status redis-server

它将会给你以下输出:
● redis-server.service - 高级键值存储 已加载:loaded (/lib/systemd/system/redis-server.service; disabled; vendor preset: enabled) 状态:活跃 (正在运行) 自从 Wed 2023-01-11 19:14:30 UTC; 1 天 4 小时前 文档:http://redis.io/documentation, man:redis-server(1) 主进程:43270 (redis-server) 状态:"准备好接受连接" 任务数:5 (限制:477) 内存:18.5M CPU:3 分 34.450 秒 CGroup:/system.slice/redis-server.service └─43270 "/usr/bin/redis-server 127.0.0.1:6379" "" "" "" "" "" "" "" Jan 11 19:14:30 ip-172-31-17-230 systemd[1]: 正在启动高级键值存储... Jan 11 19:14:30 ip-172-31-17-230 systemd[1]: 已启动高级键值存储。

5

你可以通过以下方式完成这个任务。

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

echo $redis->ping();

然后检查是否打印出+PONG,这表明redis-server正在运行。


3

这是给那些在运行 Node-Redis 的人。

const redis = require('redis');

const REDIS_PORT = process.env.REDIS_PORT || 6379

const client = redis.createClient(REDIS_PORT)

const connectRedis = async () => {
  await client.PING().then(

    async () => {
      // what to run if the PING is successful, which also means the server is up.

      console.log("server is running...")
    }, 
    async () => {
      // what to run if the PING is unsuccessful, which also means the server is down.

      console.log("server is not running, trying to connect...")
      client.on('error', (err) => console.log('Redis Client Error', err));
      await client.connect();
    })
return
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接