【问题标题】:Is it possible to have two Predis connection to different databases of the same Redis instance?是否可以有两个 Predis 连接到同一个 Redis 实例的不同数据库?
【发布时间】:2017-03-04 09:57:48
【问题描述】:

我试图在同一个 PHP 脚本上创建两个 Predis\Client 实例,以分离属于不同逻辑域的数据。

我这样做如下:

$param1 = [
    'host'     => 'localhost',
    'port'     => 6379,
    'database' => 1,
];

$param2 = [
    'host'     => 'localhost',
    'port'     => 6379,
    'database' => 3,
];

[... some code ...]

$redis1 = new Predis\Client($param1);
$redis2 = new Predis\Client($param2);

问题来了:

  • $redis1 正确将数据存入数据库1
  • $redis2 将数据存储到数据库 0 而不是 3

你知道为什么会这样吗?

【问题讨论】:

    标签: php redis predis


    【解决方案1】:

    使用new 实例化客户端:

    $redis1 = new Predis\Client([
        'host'     => 'localhost',
        'port'     => 6379,
        'database' => 1,
    ]);
    
    $redis2 = new Predis\Client([
        'host'     => 'localhost',
        'port'     => 6379,
        'database' => 3,
    ]);
    

    【讨论】:

    • 这是一个错字,我编辑了这个问题。还是谢谢
    【解决方案2】:

    我找到了答案。

    由于某种原因,$param2 在代码的其他地方被删除为null。

    Predis\Client 不会失败但使用默认参数连接!

    【讨论】:

    • 是的,我在这里设置了一个测试并直接进入工作结果。 php 在没有正确的实例化语法的情况下发出错误,很高兴您自己解决了。
    • 感谢@Niloct。在我看来Predis\Client 应该会失败。对我来说,你会发现自己写错了数据库,这让我觉得很奇怪。
    • 当时我只使用过phpredis,因为它是一个编译好的php扩展并且速度更快。你试过了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2012-03-06
    相关资源
    最近更新 更多