一尘不染

多核CPU上的Redis性能

redis

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

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

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


阅读 792

收藏
2020-06-20

共1个答案

一尘不染

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

这是设计决定。

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

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

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

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

Redis 多个核心扩展的方法是
分片
,主要是与Twemproxy一起使用。

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

2020-06-20