多核CPU上的Redis性能

我正在寻找Redis,以便为我提供一个中间高速缓存存储,其中包含有关交集和并集之类的集合操作的大量计算信息。

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

另外,如果是,我们如何在多核CPU上使用Redis来100%利用CPU资源。

回答:

这是设计决定。

Redis是带有epoll / kqueue的单线程,并且在I / O并发方面可以无限​​扩展。 -@ antirez(Redis的创建者)

选择事件驱动方法的原因是线程之间的 同步 是以软件(代码复杂性)和硬件级别(上下文切换)为代价的。除此之外,Redis的瓶颈通常是 网络

,而不是CPU。另一方面,单线程体系结构有其自身的优势(例如,原子性的保证)。

因此,对于像Redis这样的 高效可扩展的

系统,事件循环似乎是一个不错的设计。

Redis 跨多个核心扩展的方法是

分片

,主要是与Twemproxy一起使用。

但是,如果由于某种原因仍要使用多线程方法,请看一下Thredis,但要确保了解其作者所做的工作(例如,不能将其用作复制主文件)。

以上是 多核CPU上的Redis性能 的全部内容, 来源链接: utcz.com/qa/428797.html

回到顶部