【问题标题】:Redis Cluster or Replication without proxy没有代理的 Redis 集群或复制
【发布时间】:2018-02-05 18:42:18
【问题描述】:

是否可以在一台机器上构建一个master(端口6378)+两个slave(只读端口:6379、6380)“集群”并提高性能(尤其是读取)并且不使用任何代理?站点或代码能否连接到主实例并从只读节点读取数据?或者如果我使用 3 个 Redis 实例,我仍然必须使用代理?

编辑:似乎从节点没有任何数据,他们尝试重定向到主实例,但这是不正确的方式,对吗?

【问题讨论】:

  • 为什么从节点不能应答数据?为什么它重定向到主节点? (错误)已移动 9686 127.0.0.1:6378
  • 如果您想为您的问题添加一些内容,请使用“编辑”而不是评论。

标签: redis


【解决方案1】:

当然。您可以在应用程序中对路径进行编码,以便写入和读取到不同的服务器。根据您使用的编程语言和 Redis 客户端,这可能更容易或更难实现。

编辑:也就是说,我不确定您如何运行具有单个主节点的集群 - 最小值应该是 3。

【讨论】:

  • 谢谢,我试试看,我(错误)已移动 9686 127.0.0.1:6378。为什么我的只读实例不能自己返回数据?为什么需要将请求重定向到主实例?
  • 实际上 3-masters 检查是在 Ruby 脚本中完成的,所以从技术上讲,您可以拥有一个只有 1 或 2 个 master 的 Redis 集群。我有一个Python tool 允许这样做。
  • 你黑客你@neuront :)
  • 我不太清楚,但是为了构建它,获取信息等等,我使用命令集群。但实际上它似乎是复制。 PS D:\Programms\Redis-x64-3.2.100> .\redis-cli.exe -h redis -p 6378 集群节点 '第一个大号' 127.0.0.1:6376 从站'主节点号' 0 1517815038188 2 已连接“主节点号”127.0.0.1:6378 我自己,主 - 0 0 0 已连接 0-16383“第二个大号”127.0.0.1:6377 从“主节点号”0 1517815039282 1 已连接
  • 在代码中,我将 SET 添加到 fist-master ip:port 实例,GET 到从属 ip:port 之一,但我仍然得到(错误)MOVED 9686 127.0.0.1:6378。我有些不明白 =( .
【解决方案2】:

您需要在连接到从机后发送READONLY 命令,然后才能执行任何读取命令。

READONLY 命令仅在当前套接字会话期间起作用,这意味着每个 TCP 连接都需要此命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2017-06-20
    • 2011-01-09
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多