添加Redis节点而无需重新启动服务

时间:2019-05-01 18:20:39

标签: c# redis stackexchange.redis elastic-cache

我正在尝试扩展将弹性添加或删除节点的弹性功能添加到现有的Redis集群(非集群模式)中,该集群是AWS Elastic Cache提供给我的应用程序的。理想情况下,我想防止任何服务中断,或者必须为更新的端点列表重新启动应用程序。我正在使用StackExchange.Redis程序包,但是看不到从现有的连接多路复用器添加或删除端点的方法。

我要完成的工作是将端点值放在AWS的参数存储中,以便在将消息发送到应用程序正在侦听的订阅时,应用程序可以重新加载这些值。应用程序收到该消息后,我将建立一个新的连接对象,将所有事件处理程序设置为新连接,并通过将静态对象包装在锁块中来替换应用程序正在使用的静态属性。更改连接。

PSEUDO代码

  1. 从参数存储中拉出对象数组

  2. 遍历数组中的每个对象,并为新的StackExchange.Redis.ConfigurationOptions对象添加到端点集合中

  3. 为现有的静态连接对象设置局部变量

  4. 将静态连接对象设置为新的StackExchange.Redis.ConnectionMultiplexer对象,并传入新的StackExchange.Redis.ConfigurationOptions对象

  5. 将所有订阅重新分配给新连接

  6. 将所有事件重新分配给新连接

  7. 锁定并重新分配由save和get方法使用的静态数据库对象StackExchange.Redis.IDatabase到正在使用的数据库的新连接句柄。

是否有更好的方法通过StackExchange.Redis软件包来完成此操作?

0 个答案:

没有答案