可以使用副本和分片来缩放Redis。然而:
基于这些事实,如果我对高可用性不感兴趣,是否总是使用分片而不使用副本是有意义的,因为我受益于在较小的内存占用量(和较低的成本)下扩展读写操作?
最佳答案
是的你可以。
关于HA,如果该分片变得不可用,则必须确保定义/知道应用程序行为是什么。 (数据丢失,服务不可用,...)
在复制副本上读取时,如果没有有关您的应用程序的信息,则很难分辨;但大多数情况下,Redis实例(碎片)足以应付大量负载。一个非常“短”的规则是,一个分片可以处理25Gb的数据,每秒处理25.000次,延迟时间只有几毫秒。显然,这取决于您正在执行的操作,数据和命令的类型。如果您执行基本设置/获取操作,则可能会增加操作次数/秒。
通常,当我们拥有的资源不止于此时,我们使用集群来分配负载。
因此,在进入“副本读取”路由(我试图尽量避免)之前,请看一下您的应用程序,对单个分片进行一些基准测试:您可能会发现一切正常(在至少从工作负载的 Angular 来看,但如果不进行复制,则将具有SPOF)
关于redis - Redis:如果我对HA不感兴趣,仅使用分片是否有意义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64277602/