【问题标题】:How to connect to the same redis db with Predis and redis-cli?如何使用 Predis 和 redis-cli 连接到同一个 redis db?
【发布时间】:2015-05-17 14:28:13
【问题描述】:

在使用 redis 时,我注意到,与 Predis 和 redis-cli 连接会导致不同的键空间,两者都具有名称 db0。两个连接都连接到在 tcp://localhost:6379 上运行的 redis 服务器。 我可以看到转储也位于不同的位置。

这是来自两个实例的信息:

来自 redis-cli:信息服务器

# Server
redis_version:2.8.19
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:70633d1af7244f5e
redis_mode:standalone
os:Darwin 14.3.0 x86_64
arch_bits:64
multiplexing_api:kqueue
gcc_version:4.2.1
process_id:517
run_id:900bab4b7a89ed6616bababd8c7d443b7d53f6a8
tcp_port:6379
uptime_in_seconds:136898
uptime_in_days:1
hz:10
lru_clock:5781598
config_file:/usr/local/etc/redis.conf

来自predis,信息

  'Server' => 
    array (size=17)
      'redis_version' => string '2.8.19' (length=6)
      'redis_git_sha1' => string '00000000' (length=8)
      'redis_git_dirty' => string '0' (length=1)
      'redis_build_id' => string '70633d1af7244f5e' (length=16)
      'redis_mode' => string 'standalone' (length=10)
      'os' => string 'Darwin 14.3.0 x86_64' (length=20)
      'arch_bits' => string '64' (length=2)
      'multiplexing_api' => string 'kqueue' (length=6)
      'gcc_version' => string '4.2.1' (length=5)
      'process_id' => string '8894' (length=4)
      'run_id' => string 'fff57e23438c261c83dc0e91ca4829a743d5919a' (length=40)
      'tcp_port' => string '6379' (length=4)
      'uptime_in_seconds' => string '5621' (length=4)
      'uptime_in_days' => string '0' (length=1)
      'hz' => string '10' (length=2)
      'lru_clock' => string '5781216' (length=7)
      'config_file' => string '' (length=0)

【问题讨论】:

    标签: php redis predis


    【解决方案1】:
    run_id:900bab4b7a89ed6616bababd8c7d443b7d53f6a8
    'run_id' => string 'fff57e23438c261c83dc0e91ca4829a743d5919a' (length=40)
    

    以上是你连接两个不同的 Redis 服务器的证明,所以答案很简单,就是有一个不同的问题需要解决,也就是说,要了解它为什么会发生。在检查了明显的原因之后,如果您没有找到任何线索,请检查您是否正在与一台侦听 IPv6 地址的服务器和另一台侦听 IPv4 地址的服务器通话,相同的端口。

    【讨论】:

    • 我注意到了,但忘记了通过 IPv6 连接到其中一个或另一个的可能性。会检查的。
    • 添加了解决我问题的新答案。运行了多个实例。
    【解决方案2】:

    解决方案比我想象的要简单。显然我运行了另一个 redis 服务器,因为在通过自制软件安装时,我无意中添加了一个 plist 文件来默认运行 redis 守护进程。

    检查所有redis实例
    ps aux | grep "redis"
    

    解决了这个问题。

    【讨论】:

    • 不可能有多个实例在同一个 ip/地址中运行,所以唯一的选择是你有一个在 ipv4 地址和一个 ipv6 中运行绑定,因为在两个 INFO输出端口相同(6379)。可能你在一侧使用“localhost”,在另一侧使用“127.0.0.1”,第一个解析为 ipv6 环回地址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2017-04-26
    • 2021-12-16
    相关资源
    最近更新 更多