Redis 可以使用多少个核心?

Redis 可以使用多少个核心?

我在虚拟机上使用 Redis,无法决定应该为它们分配多少个核心。

我知道 Redis 使用单线程来处理请求,但文档也指出某些任务由不同的线程/进程在后台执行。

我可以分配比所需更多的核心而不会浪费资源,但我不喜欢超出理论限制的想法,我认为在这种情况下存在这种限制。

到目前为止我想到了这个:

我是不是漏掉了什么?Redis 是否还有其他可以利用额外核心的任务?也许是复制或流?

答案1

从命令执行的角度来看,Redis 基本上是一个单线程服务器(实际上,现代版本的 Redis 使用线程来执行不同的事情)。请浏览以下链接。HRedis 有多快?。stackoverflow 上也有一篇相同的帖子 -Redis是单线程的,那么它如何进行并发I/O?

答案2

请检查此网址https://redis.io/topics/benchmarks

“Redis 的设计初衷并不是从多核 CPU 中获益。如果需要,人们应该启动多个 Redis 实例,以便在多个核上进行扩展。将单个 Redis 实例与多线程数据存储进行比较并不公平。”

“CPU 是另一个非常重要的因素。由于是单线程的,Redis 更倾向于使用具有大缓存的快速 CPU,而不是多核 CPU。在这场比赛中,英特尔 CPU 目前是赢家。与类似的 Nehalem EP/Westmere EP/Sandy Bridge Intel CPU 相比,在 AMD Opteron CPU 上获得的性能只有 Redis 的一半,这并不罕见。当客户端和服务器在同一台机器上运行时,CPU 是 redis-benchmark 的限制因素。”

答案3

只需使用单核虚拟机。Redis 不会使用额外的核心。

相关内容