问题标签 [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 回答
1298 浏览

redis - 如何使用 ServiceStack 客户端(无 Sentinel)连接到 Redis 集群

我设置了一个 Redis 集群(版本 3.2.0),而不是 Sentinel,有 4 个主服务器(每个都有一个从服务器)和一个随机指向 4 个主服务器 IP 之一的虚拟 IP。

VIP:10.0.0.10:6379,连接M1、M2、M3、M4:

M1: 10.0.0.1:6379 - S1: 10.0.0.5:6378
M2: 10.0.0.2:6379 - S2: 10.0.0.6:6378
M3: 10.0.0.3:6379 - S3: 10.0.0.7:6378
M4: 10.0.0.4 :6379 - S4: 10.0.0.8:6378

我的客户端使用 ServiceStack 通过 VIP 连接到我的集群:10.0.0.10:6379,但我收到错误消息:

ServiceStack.Redis.dll 中出现“ServiceStack.Redis.RedisResponseException”类型的异常,但未在用户代码中处理

附加信息:移动 2872 10.0.0.3:6379

我当前的字符串:

我认为这是因为我的 ServiceStack 字符串连接为独立的 Redis 而不是 Redis 集群。这与我们必须使用-c命令redis-cli行时相同。

帮助我使用 ServiceStack 客户端或任何其他使用 Redis 集群的解决方案来制作我的 Redis 集群的连接字符串。

0 投票
1 回答
384 浏览

node.js - 在单个 Redis 通道上使用 Redis 通道的成本是多少

我有一些代码基本上可以做到这一点 psudocode()

然后我通过该通道与该摄像机进行通信,这使我可以拥有多个引擎。

我还可以构造代码,而不是为每个摄像机创建一个通道。我可以创建一个名为“cameraComms”的频道,并确保每条消息都包含一个相机 ID。

我想知道这两种设计模式是否有任何性能优势/劣势?

如果有帮助,我可以为每个进程注册多达 200 多个摄像头,并且通信跨 3 个运行 3 个 Redis 实例的不同机器。

非常感谢帮助/建议。

0 投票
1 回答
407 浏览

redis - Redis 和 twemproxy

我最初在我的本地机器上形成了一个具有 3 个主节点和 3 个从节点的 Redis 集群。

现在我想在 Redis 集群上使用twemproxy,所以我使用了以下几行(见下文)作为我的配置文件,并使用 Redis 集群实现了 twemproxy。

但我面临的问题是,在我发送到的 100 个密钥中,port 22122只有 30-40 个已在 Redis 集群中注册。

请帮忙!

0 投票
1 回答
7535 浏览

redis - 为什么我的 Redis Lua 脚本不能自动更新不同 Redis Cluster 节点上的键?

我有一个由多个节点组成的 Redis 集群。我想在单个原子操作中更新 3 个不同的键。我的 Lua 脚本是这样的:

我用以下方式解雇了它:

但我收到错误消息:

无法进行上述操作,更新将失败。似乎我无法使用单个 Lua 脚本修改不同节点中的键。但根据文档:

所有 Redis 命令必须在执行之前进行分析,以确定该命令将操作哪些键。为了使 EVAL 成为 true,必须显式传递键。这在很多方面都很有用,尤其是确保 Redis 集群可以将您的请求转发到适当的集群节点。

请注意,此规则不是为了给用户提供滥用 Redis 单实例配置的机会而强制执行的,其代价是编写与 Redis 集群不兼容的脚本。

所以我认为只要遵循key传递规则,脚本应该兼容Redis Cluster。我想知道这里有什么问题,我应该怎么做才能更新单个脚本中的所有键。

0 投票
1 回答
3441 浏览

linux - 无法创建 redis 集群(抱歉,无法连接到节点)

我正在尝试遵循redis 集群教程,但每当我尝试运行时:

我得到错误:

[ERR] 抱歉,无法连接到节点 127.0.0.1:7000

7000服务器正在运行,我可以使用连接到端口

我错过了什么?

0 投票
1 回答
1165 浏览

java - 如何在 Lettuce Redis 客户端中使用客户端一致性哈希

我正在尝试查找如何配置和使用具有客户端一致哈希的Lettuce Redis 客户端的参考资料。

这种分片方法是在 Jedis 客户端的 ShardedJedis 中实现的,Redis 分区文档中进行了描述。

方法的简短描述:我们有一个具有多个独立 Redis 进程/节点的环境,没有使用 Redis Cluster 或 Sentinel 的任何基于服务器的请求路由,客户端通过应用哈希函数(key -> node_id) 在客户端。

生菜是否支持这种开箱即用的集群/分片?如果是,如何将其配置为使用客户端散列?

0 投票
1 回答
7645 浏览

redis - Correct shutdown sequence for Redis cluster

Suppose I have the following Redis replication setup:

  • 3 machines
  • Each machine has a Redis server and a Redis sentinel.
  • One of the servers is set as master, the other two are its slaves.

What would be the correct sequence and commands to gracefully shutdown this setup, all while keeping the existing master as master and existing slaves as slaves (meaning, no failover or reconfig should take place)

Thanks.

0 投票
2 回答
2580 浏览

python - 尝试使用 Celery 编写时出现 RedisClusterException

我的环境: 我有三台 Ubuntu 服务器。使用 Nginx 将一台服务器用作负载均衡器。其他两台服务器包含完全相同的项目(除了 redis 是相同的,其中一个是主服务器,另一个是从服务器)。

我正在使用 Python、Gunicorn、Django、Celery、Redis、Sentinel的程序/应用程序

我的项目做什么: 我有一个接受 GET 请求的 URL,对请求执行一些逻辑并保存到 redis 中。

当我的连接是:

但是当我使用集群连接时:

我得到的错误:

当我运行 redis-cli 并在主服务器(服务器 1)上设置一个变量时,我可以在从服务器(服务器 2)上检索它

当我尝试在 redis 客户端中执行集群槽命令时,我得到与上述相同的错误。

要考虑的一件事是我的 redis 配置文件没有 tcp 套接字,当我尝试使用 tcp redis 时不起作用。当我尝试运行 redis 时,它给了我一个错误。这已更改为默认 redis.conf 文件中的默认 Unixsocket

从:

至:

0 投票
5 回答
8656 浏览

redis - 如何解决redis集群“等待集群加入”的问题?

我有 3 台机器并为 redis 集群创建了 6 个节点,几个月前我已经成功创建它,但现在它掉线了,我尽力修复它,但它不起作用,所以我清理所有数据并从零重新创建它,当我使用以下命令创建集群时,它在这里阻塞,并等待节点加入集群,我对其进行了一些研究,我清理了我的数据,一次又一次地记录,一次又一次地做,但它仍然不起作用。

显示结果

0 投票
0 回答
491 浏览

redis - 如何禁用redis集群复制

我们这里有一个应用程序,它使用 redis 集群来保存一些短期密钥,大约 2 秒。虽然我们希望主服务器在主服务器发生故障时故障转移到从服务器,但这些临时数据的短期丢失并不重要。为了节省带宽,我们希望禁用主从之间的复制。集群中的主从配置是否可以实现这一点?