Agi*_*gis 32
我查看了redis网站,发现redis不是为多核CPU设计的.我的问题是,为什么会这样?
这是一个设计决定.
Redis是带有epoll/kqueue的单线程,并且在I/O并发性方面无限扩展. - @ antirez(Redis的创造者)
选择事件驱动方法的一个原因是线程之间的同步在软件(代码复杂性)和硬件级别(上下文切换)中都是成本.除此之外,Redis的瓶颈通常是网络,而不是CPU.另一方面,单线程体系结构有其自身的优点(例如,保证原子性).
因此,对于像Redis这样高效且可扩展的系统,事件循环似乎是一个很好的设计.
此外,如果是,我们如何在多核CPU上使用redis 100%利用CPU资源.
Redis在多个核心上进行扩展的方法是分片,主要是与Twemproxy一起.
但是,如果出于某种原因,您仍然希望使用多线程方法,请查看Thredis,但请确保您了解其作者所做的事情(例如,您不能将其用作复制主机).
| 归档时间: |
|
| 查看次数: |
18929 次 |
| 最近记录: |