首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS Redis Reader端点和ioredis

AWS Redis Reader端点和ioredis
EN

Stack Overflow用户
提问于 2020-02-06 12:28:56
回答 1查看 1.6K关注 0票数 3

我们希望我们的Redis更具有可伸缩性,并且希望能够添加更多的read实例。

我正在尝试使用这个新的阅读器端点:https://aws.amazon.com/about-aws/whats-new/2019/06/amazon-elasticache-launches-reader-endpoint-for-redis

但是,对于ioredis来说,我看不到任何简单或自动的方法来使用这种方法,在这种方法中,我可以设置哪个端点用于写,哪个端点用于读取。即使在这里,我也可以看到最后推荐的方法是“手动拆分”:https://github.com/luin/ioredis/issues/387

您知道现有的解决方案或好的方法吗?我可以设置哪些端点用于写入,哪些端点将用于读取?

现在对我来说最直接的是某种“代理”层,在这里我将创建Redis的两个实例,并将所有的写入发送到主端点,并将所有的读发送到Reader端点。然而,我更喜欢一些更好(或测试良好)的方法。

PS:我试图用Clusterioredis功能“黑”它,但是即使没有任何功能和一个主端点的简单连接也不能用ClusterAllFailedError: Failed to refresh slots cache. (启用读取器端点--必须关闭群集模式)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-08 16:56:07

请注意它是如何结束的。

我们有两个实例(如果URL相同,则重用相同的实例)

代码语言:javascript
运行
复制
redis = new Redis(RKT_REDIS_URL.href, redisOptions)
if (RKT_REDIS_READER_URL.href === RKT_REDIS_URL.href) {
    redisro = redis
} else {
    redisro = new Redis(RKT_REDIS_READER_URL.href, redisOptions)
}

然后先用于写入,其他用于读取。

代码语言:javascript
运行
复制
 redis.hmset(key, update)
 redisro.hmget(key, field)

然而,经过一段时间后,我们已经采用了集群红色,它是更好的,可以推荐。而且,ioredis npm模块能够无拘无束地使用它(您不需要配置任何东西,只需将配置端点放在那里,即AWS提供的端点,就这样)。

这是我们的配置

代码语言:javascript
运行
复制
redisOptions.scaleReads = 'master'
redis = new Redis.Cluster([RKT_REDIS_URL.href], redisOptions)

scaleReads的选项包括

默认情况下,

scaleReads是“主”,这意味着ioredis永远不会向奴隶发送任何查询。还有其他三个可供选择的方案:

“所有”:随机向主程序发送写查询,向主程序或从主发送读取查询。“从”:向主发送写查询,向奴隶发送读查询。

https://github.com/luin/ioredis

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60095059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档