You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何获取Redis的lpush()方法返回值?

在PHP中获取Redis lPush方法的返回值问题解答

你提到的lPush方法确实会返回执行后列表的长度,你没看到输出大概率是代码里的连接环节出了问题,咱们一步步拆解排查:

问题分析

看你的代码,你先通过$this->redis()获取了Redis实例,然后又调用了connect方法。这里要注意:很多框架的redis()方法已经帮你完成了初始化连接的操作,重复调用connect可能会导致连接失败。一旦连接失败,lPush会返回false,而print_r(false)在终端或浏览器里几乎不会输出任何可见内容,这就是你看不到返回值的原因。

解决方案

1. 先确保Redis连接正常

先去掉重复的连接逻辑,或者明确判断连接状态:

$redis = $this->redis();
// 优先用框架实例的连接状态判断,比如phpredis扩展的isConnected方法
if (!$redis->isConnected()) {
    // 如果未连接,再手动尝试连接
    $connectSuccess = $redis->connect(REDIS_HOST, ZGH_REDIS_PORT);
    if (!$connectSuccess) {
        echo "Redis连接失败,请检查地址、端口或Redis服务状态";
        exit;
    }
}

2. 用更清晰的方式查看返回值

把print_r换成var_dump,它能明确显示变量的类型和值,比如false会输出bool(false),成功时会输出列表的整数长度:

$res = $redis->lPush(REDIS_HRGAME_PUSH_BATCH_KEY, $pushInfo);
var_dump($res); // 代替print_r,更直观
exit;

修改后的完整代码示例

$id = $this->post('id');
$info = $this->PushModel->getPush($id);
if(empty($info)){
    $this->json(Constant::FAILURE);
}
$gameId = $info['game_id'];
$title = $info['title'];
$content = $info['content'];
$pushInfo = "$id|$gameId|$title|$content";

$redis = $this->redis();
// 检查并确保Redis连接正常
if (!$redis->isConnected()) {
    $connectSuccess = $redis->connect(REDIS_HOST, ZGH_REDIS_PORT);
    if (!$connectSuccess) {
        echo "Redis连接失败";
        exit;
    }
}

$res = $redis->lPush(REDIS_HRGAME_PUSH_BATCH_KEY, $pushInfo);
var_dump($res);
exit;

补充说明

  • phpredis扩展的lPush方法逻辑是确定的:执行成功返回当前列表的长度(整数),执行失败返回false。
  • 如果你用的是Predis客户端,返回逻辑也是一致的,但连接方式可能略有不同,不过从你的代码看应该是用的phpredis。

内容的提问来源于stack exchange,提问作者dabeige

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:35:28