问题标签 [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 投票
1 回答
1279 浏览

sails.js - 如何设置sails 应用程序连接到redis 集群?

我们能够设置我们的sails 应用程序以使用redis 作为我们的会话存储和套接字连接。但是我们不知道如何设置帆来连接到 redis 集群,有什么想法/例子吗?


为了更清楚一点,我们的sails 应用程序已经在使用redis,其配置类似于:

但是现在我们想将它设置为使用 redis 集群,它可能运行在不同的服务器和不同的端口上。

0 投票
1 回答
11898 浏览

redis - 使用 spring-data-redis 1.7.0.M1 时如何配置 redis-cluster

我使用 spring-data-redis 版本 1.7.0.M1 和 jedis 版本 2.8.0 这是我的配置

并使用【redisTemplate.opsForValue().get("foo")】测试

抛出异常

使用 spring-data-redis 1.7.0.M1 时如何配置 redis-cluster?

0 投票
3 回答
6461 浏览

redis - 使用 redis-trib.rb 创建集群时出现连接错误?

我的所有 Redis 服务器配置如下:

大师:192.168.0.106:7001、192.168.0.105.7001、192.168.0.112:7001

从机:192.168.0.106:7002、192.168.0.105:7002、192.168.0.122:7002

其中 192.168.0.106:7002 服务器是 192.168.0.106:7001 服务器的从属服务器,依此类推。我让所有服务器都在运行,并且可以对所有服务器执行 redis-cli。我可以看到 17001 和 17002 端口也打开了。但是当我运行时:

./redis-trib.rb 创建--replicas 1 192.168.0.106:7001 192.168.0.105:7001 192.168.0.112:7001 192.168.0.106:7002 192.168.0.105:7002 192.168.0.112:

我收到一个错误:

创建集群

[ERR] 抱歉,无法连接到节点 192.168.0.106:7001

当所有服务器都在工作并且它们的端口都打开时,我不知道如何解决这个问题?

一件事是我确实有主人用密码保护。也许 redis-trib.rb 无法处理受密码保护的服务器?

0 投票
1 回答
313 浏览

ycsb - 由于我们没有绑定redis集群,如何运行ycsb来测试redis集群?

我正在研究redis。我已经使用三个主节点构建了我的 Redis 集群,并且我还有另一个节点用于运行 ycsb。我遇到了与To start YCSB load with cluster enabled option for REDIS中所述相同的问题 。我尝试根据给出的答案编辑 RedisClient.java。但是我遇到了错误: import redis.clients.jedis.HostAndPort; 导入 redis.clients.jedis.JedisCluster;,因为这些包不存在。所以我的问题是在哪里可以找到像 redis.clients.jedis.JedisCluster 这样的包?有没有人成功编辑 RedisClient.java 以测试 redis 集群,或者我们有其他解决方案吗?谢谢!

0 投票
0 回答
297 浏览

redis - 一个redis集群的一台机器上应该运行多少个redis实例

Hola Redis 宇宙!!

我们计划有以下配置的redis集群。

  1. 一个由 5 个节点组成的 redis 集群。
  2. 每个节点有 8 个内核、64 GB RAM 和 100 GB SSD 驱动器。
  3. 每个主实例一个从属。
  4. 在所有实例上 15 分钟后只有 RDB 持久性(无 AOF)。

我们预计每秒会有大量的读取/写入次数,这个数字超过 20k+。

在每个节点上,我们计划有 n 个主节点和 n 个从节点(其他节点),考虑到 redis 的单线程特性,我们希望利用多核。一个节点上应该运行多少个 redis 实例(master 和 slave)?IE。我们应该使用什么作为 n 的值?(2主/2从或3主/3从)

我检查了在本地运行多个实例,并且在 RDB 保存过程中 CPU 使用率似乎猛增了很多。运行多个实例会增加问题,因为保存各种实例的时间会发生冲突。生产上会不会有问题?

谢谢

0 投票
1 回答
4793 浏览

user-interface - 支持集群的 Redis GUI 工具

我们的项目需要一个用于监控和管理 Redis 集群的GUI工具。

我找不到支持连接到redis 集群的。

例如,我docker-compose成功地在本地运行了一个 redis 集群和一个 redis 洞察 gui:

但是,如果我尝试通过 redis insight gui 连接到 redis 集群,则会出现错误:

在此处输入图像描述

如果有人知道这一点,请告诉我这将非常有帮助:)

谢谢你

0 投票
1 回答
511 浏览

redis - Redis 密钥空间通知 - 订阅者数量与争用

我正在尝试使用 Redis 实现标记。这是它的样子:

我计划使用Redis Keyspace Notifications来防止过期的密钥永远留在我的标签集中(即使缓存中的每个项目都有默认的 TTL 集,我也不喜欢保留陈旧的数据)。

这些是我正在考虑的选项:

1) 订阅所有“过期”事件。

优点:

  • 只有 1 个订阅者。

缺点:

  • 由于并非所有项目都包含标签,因此我必须检查 mykey:tags ,如果存在则获取标签并从每个标签集中删除该项目。
  • 这种方法的争用将随着存储中键的数量而增加。

2) 订阅那些只包含标签的键的所有事件。

优点:

  • 将为仅带有标签的项目创建订阅。

缺点:

  • 必须有与每个订阅者相关的开销。
  • 根据商店中标记商品的数量,订阅者的数量可以快速增长。

问题:

  1. 我应该实施哪个选项?我应该关注 2) 的订阅者数量还是 1) 的争论更重要?我找不到关于这个主题的任何建议。
  2. 最终的目标是在 Redis 集群上实现这一点。这是否会给实施增加任何额外的关注?

更新1:

这是在我们的缓存上进行标记的通用实现。在这一点上,我不确定我们最终是如何使用它的。这更像是我正在研究的 PoC。一些数字试图回答评论中的一些问题:

  • 数量:我们每天有数千万的独立访问者。但是,并非每个访问者的缓存中存储的所有项目都有标签。但这种情况不断变化。
  • 标签:标签被管理。目前有几十个标签。我们正在考虑在未来支持自由文本标签。
  • 我没有测试我在这里建议的两种方法中的任何一种。我希望其中一个选项太糟糕了,甚至不是一个选项:)

更新 2:

经过一些试验和错误以及更多的研究,我放弃了2)。redis 客户端和输出缓冲区都有限制,这使得这个选项不可行。您可以在此处此处找到更多信息。我试过1),它工作得很好。我什至将密钥的到期时间设置为彼此相距 5ms,并且代码可以正确处理它。这可以是一个替代方案。

@thepirat000 建议的另一种选择。我将此答案标记为已接受的答案,但我还对他的建议进行了一些调整:我不想在每个标签操作的标签中进行维护,而是我可以随机确定何时进行。这是一个足够好的方法,它不使用 pub/sub 也不使用键空间通知。

0 投票
1 回答
746 浏览

redis - 如何使用 Sentinel 运行 redis 集群

由于扩展和高可用性通常是不同的概念(除非您选择负载平衡容错方案),我希望 Redis 能够同时支持这两者。但是据我了解,我们不能将 Redis 集群与 Sentinel 混合使用吗?如果是这样,我如何创建一个具有多个分区并且也由 Sentinel 管理的部署?是否有描述如何完成此操作的指南?

0 投票
5 回答
4752 浏览

node.js - Redis命令获取Redis集群上的所有可用密钥?

我正在使用这个

但它只提供来自其中一个 redis 集群的密钥。如何从所有集群中获取密钥?

0 投票
0 回答
1148 浏览

redis - Kubernetes 服务 Redis Sentinel 未始终如一地返回 Redis 主 IP 和端口

Kubernetes 服务Redis Sentinel 没有始终如一地返回 Redis 主 IP 和端口,并且所有 pod 都在 docker 容器中。我已经使用了https://github.com/kubernetes/kubernetes/tree/master/examples/redishttps://github.com/helm/helm - redis 集群

当我连接到 Kubernetes 服务(10.3.251.152、26379/TCP)时,它应该确定 Redis Sentinel 主机(ip:'10.0.0.68',端口:'6379'),然后与它建立连接。但有时,Kubernetes 服务返回 (ip: '10.0.0.68', port: '6379') 和其他时候,它返回 Kubernetes 服务 (10.3.251.152 , 26379/TCP) 作为哨兵主 IP。我们可以在程序 Log to connect with sentinel master中看到这一点

在这两种情况下(kubernetes sentinel example,helm.sh's redis cluster)都会发生这种不一致。

您可以在此处查看服务和 pod 详细信息..

在此处输入图像描述 如何进行故障排除?

有关主/从/哨兵详细信息的更多详细信息

如何进行故障排除?