Redis在多核CPU上的性能

Lov*_*ija 22 cpu cpu-usage redis jedis

我正在环顾redis,为我提供一个中间缓存存储,其中包含很多围绕集合操作的计算,例如intersection和union.

我查看了redis网站,发现redis不是为多核CPU设计的.我的问题是,为什么会这样?

此外,如果是,我们如何在多核CPU上使用redis 100%利用CPU资源.

Agi*_*gis 32

我查看了redis网站,发现redis不是为多核CPU设计的.我的问题是,为什么会这样?

这是一个设计决定.

Redis是带有epoll/kqueue的单线程,并且在I/O并发性方面无限扩展. - @ antirez(Redis的创造者)

选择事件驱动方法的一个原因是线程之间的同步在软件(代码复杂性)和硬件级别(上下文切换)中都是成本.除此之外,Redis的瓶颈通常是网络,而不是CPU.另一方面,单线程体系结构有其自身的优点(例如,保证原子性).

因此,对于像Redis这样高效可扩展的系统,事件循环似乎是一个很好的设计.

此外,如果是,我们如何在多核CPU上使用redis 100%利用CPU资源.

Redis在多个核心上进行扩展的方法是分片,主要是与Twemproxy一起.

但是,如果出于某种原因,您仍然希望使用多线程方法,请查看Thredis,但请确保您了解其作者所做的事情(例如,您不能将其用作复制主机).