问题标签 [redis-cluster]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5410 浏览

redis - redis-cli 重定向到 127.0.0.1

我在 PC1 上启动了 Redis 集群,然后在 PC2 上连接它。当需要重定向到另一个集群节点时,它会显示Redirected to slot [7785] located at 127.0.0.1,但应该显示Redirected to slot [7785] located at [IP of PC1, like 192.168.1.20],然后它会显示错误。怎么了?我能做些什么?

输出:

输出redis-cli -h 192.168.1.20 -p 30001 cluster nodes

0 投票
1 回答
2227 浏览

c# - Redis集群模式下StackExchange.Redis有什么用

这是使用 stackexchange.redis v1.1.603、.net 4.6、控制台应用程序。这是我的代码:

始终显示消息“已移动:12586 [192.168.1.20:30003]”。

我搜索了所有的官方文档和互联网,找不到正确的答案。我使用 redis-cli 时没关系。

如何解决这个问题?我需要在我的代码中处理异常吗?如果,如何?

0 投票
1 回答
1460 浏览

redis - redis cluster dbsize 仅在该节点上显示键

我正在使用连接到 redis 集群节点

redis-cli -c -p 7001

当我发出info命令或dbsize命令时,我会得到仅驻留在该节点上的键的计数,而不是集群中所有节点上的所有键的计数。但是,如果我要求一个不在此节点上的密钥,它会从该节点获取密钥。如果我希望 keys * 从所有可用节点产生所有密钥怎么办?

0 投票
1 回答
1588 浏览

redis - redis集群中特定节点的hash槽在发生硬故障的情况下如何恢复?

所以我正在测试redis集群。我有一个有 3 个主机和 3 个从机的设置。现在,如果一个节点面临硬故障(主节点和从节点都出现故障),集群仍然可以正常工作,除非故障节点服务的哈希槽。现在,在测试这样的场景时,我看到对这些哈希槽服务的键进行的读/写操作失败并出现异常,这很好(我正在使用 jedis 顺便说一句)。但是,如果我使用 redis 集群作为缓存,我希望这些哈希槽由其他节点提供服务。该实用程序中似乎不存在此功能redis-trib

我无法重新分片集群以移动这些哈希槽,./redis-trib.rb reshard因为[ERR] Not all #{ClusterHashSlots} slots are covered by nodes.. 我也无法从集群中删除节点,因为./redis-trib.rb del-node失败了[ERR] Node #{node} is not empty! Reshard data away and try again.。那么,最好的方法是什么,以处理我无法启动我的原始节点但希望那些哈希槽由其他节点提供服务的场景(假设我什至可以在旧节点上丢失数据)?理想情况下,例如能够删除该节点(集群中的主节点和从节点,并将这些哈希槽分配给其他节点)。

0 投票
1 回答
947 浏览

redis-cluster - ioredis 客户端是否缓存哈希槽和节点地址之间的映射?

在 Redis 集群教程中,说明了

“一个认真的客户端能够做得更好,并缓存哈希槽和节点地址之间的映射,以直接使用正确的连接到正确的节点。只有在集群配置发生变化时才会刷新映射,例如在故障转移或系统管理员通过添加或删除节点更改集群布局之后。”

ioredis 是否缓存哈希槽和节点地址之间的映射?

0 投票
2 回答
11128 浏览

java - 我应该从 Redis 集群从站读取吗?

我们有一个用作缓存的 Redis 集群配置。现在由于写入主服务器和从服务器读取的正常模式(使用其他数据库),我们正在尝试对 Redis 集群做同样的事情。
经过一番调查,我们发现没有像 redisson、jedis 和 Spring Data Redis 这样的 Redis 客户端(在 java 中)支持这一点。我们似乎找到了一些解决方法,但它看起来很丑,现在我在想是否值得?

这是我的用例

  • 大约最高 QPS:1000
  • 有效负载大小:最大 1 MB(压缩后)
  • 集群大小 3 个主机,每个主机有 2 个从机(相当高规格的机器)
  • Cringe 部分:此集群的实际网络带宽为 Max 1GB(集群内通话分别为 1 GB)

考虑到这一点,我有以下问题:

  • 它(从奴隶读取)会以任何方式帮助我吗?
  • 有没有我应该避免的坑洞(任何特殊的服务器端配置)?
  • 狭窄的道路会成为问题吗?
  • 是否有正确执行此操作的标准方法(库/客户端)

非常感谢任何帮助(博客、案例研究、建议)。

0 投票
1 回答
857 浏览

caching - Redis 集群不支持多个主节点同时故障

我有以下配置:

  • redis_version:3.2.0
  • 3个主节点和3个从节点

每个主节点都复制到一个从节点一切都是正确的。当一个主节点因“kill”命令失效时,对应的从节点按预期成为主节点。几秒钟后,cluster_state 返回到 OK 状态。

但是,如果两个主节点同时发生故障,则关联的从节点都不会成为主节点。cluster_state 保持“失败”状态。

0 投票
1 回答
503 浏览

redis - 如何使用 redis 2.8 生成的 dump.rdb 启动 redis 3.2

我使用 redis 服务器版本 2.8.22 创建了一个 dump.rdb。redis server 3.2 启动时会被忽略。Redis 3.2 中的数据格式是否向后兼容 2.8.22 版本中的数据格式?

0 投票
1 回答
1371 浏览

redis - 使用 JedisCluster 写入 Redis 集群中的分区

我有一个 Redis 集群。我正在使用 JedisCluster 客户端连接到我的 Redis。

我的应用程序有点复杂,我想基本上控制我的应用程序中的哪个分区数据。例如,我的应用程序由子模块 A、B、C 组成。然后我希望子模块 A 中的所有数据都应该转到分区 1。类似地,来自子模块 B 的数据应该去分区 2,以此类推。

我正在使用JedisCluster,但我没有找到任何 API 可以写入集群上的特定分区。我假设我将在我的所有 Redis 节点上具有相同的分区名称,并处理哪些数据将自动处理到哪个节点,但我将处理哪个分区。

我尝试通过JedisClusterlib

https://github.com/xetorthio/jedis/blob/b03d4231f4412c67063e356a7c3acf9bb7e62534/src/main/java/redis/clients/jedis/JedisCluster.java

但找不到任何东西。请帮忙?在此先感谢您的帮助。

0 投票
1 回答
113 浏览

python-3.x - 如果我剪断网线并将一个 ReDiS 集群的 master 与该集群的 ReDiS slave 分开,如果 master 的数量增加一倍怎么办?

更具体地说,假设我在网络电缆上绊倒,并将 ReDiS 集群的主服务器从该集群的 ReDiS 从服务器中分离出来。如果主人的数量翻倍,我可以让我的客户只写信给分裂前的“第一”主人吗?

例如,如果我有一个具有以下属性的集群,并且我在子网 192.168 之间的网络电缆上绊倒了。53 .* 和 192.168。105 .* 我最终会得到 6 个大师吗?

192.168 上的 ReDiS 1。192.168 上的53.1 :7000(主)
ReDiS 2。53.1:7001(主)
192.168 上的 ReDiS 3。53.1 :7002(主)
192.168 上的 ReDiS 4。192.168 上的105.2:7000(从属
ReDiS 5。105.2:7001(从属
ReDiS 6 在 192.168。105.2 :7002(机)

我猜 ReDiS 4、ReDiS 5 和 ReDiS 6 会很快让自己成为大师,我最终会得到以下结果:

192.168 上的 ReDiS 1。192.168 上的53.1 :7000(主)
ReDiS 2。53.1:7001(主)
192.168 上的 ReDiS 3。53.1 :7002(主)
=======//卡扣电缆//========
192.168 上的 ReDiS 4。192.168 上的105.2:7000(
ReDiS 5。105.2:7001(
192.168 上的 ReDiS 6。105.2:7002(

另外,当我更换折断的电缆时,我会再次得到以下结果,对吗?

192.168 上的 ReDiS 1。192.168 上的53.1 :7000(主)
ReDiS 2。53.1:7001(主)
192.168 上的 ReDiS 3。53.1 :7002(主)
192.168 上的 ReDiS 4。192.168 上的105.2:7000(从属
ReDiS 5。105.2:7001(从属
ReDiS 6 在 192.168。105.2 :7002(机)

如果我写给我的客户以了解大师“应该”是什么,并让他们只写信给 192.168 中的大师,这是否明智。53. *?

firstThreeMasters缓解这种情况下问题的一个示例,我是否可以仅在由 的成员表示的 ReDiS 之一成为从属时才更新以下变量?

(虽然我的客户端代码的行为是这个问题的主题,但您认为这属于 serverfault.com 吗?如果是,请在评论中告知或建议移动它。)