在不使用持久性的情况下,Redis 在多个主服务器上分片会变得更快吗?

Posted

技术标签:

【中文标题】在不使用持久性的情况下,Redis 在多个主服务器上分片会变得更快吗?【英文标题】:Will Redis get faster with sharding on multiple masters when using no persistence? 【发布时间】:2016-11-24 04:02:40 【问题描述】:

我对独立(单线程)Redis 的测试表明,来自多个并行客户端的负载可以将 Redis CPU 使用率提高到 100%(在我的内存缓存用例中)。

如果启用了持久性,则以集群模式启动并将内容分片到多个主服务器是一种可能的加速方法。

我有一个没有持久性的配置(关闭了 RDB 和 AOF)。启动多个 master 是否有助于提高性能(仍然使用相同的累积 RAM 量)?

【问题讨论】:

【参考方案1】:

Redis 是单线程的,所以单机实例的性能受限于单 CPU 核心的处理能力和单机的网络带宽。但是,Redis 非常非常快。所以通常瓶颈是网络带宽,除非你运行大量慢速命令/lua 脚本。

如果在多台机器上部署 Redis 集群,无论开启还是关闭持久化,性能都应该有所提升。因为你有更多的 CPU 内核和更多的网络带宽。

如果您在单台机器上部署 Redis 集群(每个节点侦听唯一的端口),性能可能会有所提高。这取决于......如果瓶颈是网络带宽,它不会得到改善。另一方面,如果瓶颈是 CPU 处理能力,则性能应该有所提升。因此,在这种情况下,您应该对您的特定数据、特定环境和特定命令/lua 脚本进行一些基准测试。

【讨论】:

以上是关于在不使用持久性的情况下,Redis 在多个主服务器上分片会变得更快吗?的主要内容,如果未能解决你的问题,请参考以下文章

深入学习Redis主从复制

redis-主从复制(sentinel)

如何在不丢失信号的情况下将信号从多个子进程发送到主进程?

缓存加速——Redis服务之主从复制哨兵模式群集模式

redis的持久化

Redis高可用及分片集群