我正在四处寻找redis,以便为我提供一个中间缓存存储,它围绕诸如交集和联合之类的集合操作进行大量计算。
我查看了redis网站,发现redis不是为多核CPU设计的。我的问题是,为什么会这样呢?
另外,如果是,我们如何在多核CPU上使用Redis来100%利用CPU资源。
我查看了redis网站,发现redis不是为多核CPU设计的。我的问题是,为什么会这样?
这是设计决定。
Redis是带有epoll / kqueue的单线程,并且在I / O并发方面可以无限扩展。-@ antirez(Redis的创建者)
选择事件驱动方法的原因是线程之间的同步是以软件(代码复杂度)和硬件级别(上下文切换)为代价的。除此之外,Redis的瓶颈通常是网络,而不是CPU。另一方面,单线程体系结构具有其自身的优势(例如,原子性的保证)。
因此,对于像Redis这样的高效且可伸缩的系统,事件循环似乎是一个不错的设计。
另外,如果是,我们如何在多核CPU上使用Redis来100%利用CPU资源。
Redis跨多个核心扩展的方法是分片,主要是与Twemproxy一起使用。
但是,如果由于某种原因仍要使用多线程方法,请看一下Thredis,但要确保了解其作者所做的工作(例如,不能将其用作复制主文件)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句