很多人都认为Redis和CPU的关系很简单,就是Redis的线程在CPU上运行,CPU快,Redis处理请求的速度也很快。
这种认知其实是片面的。CPU的多核架构以及多CPU架构,也会影响到Redis的性能。如果不了解CPU对Redis的影响,在对Redis的性能进行调优时,就可能会遗漏一些调优方法,不能把Redis的性能发挥到极限。
今天,我们就来学习下目前主流服务器的CPU架构,以及基于CPU多核架构和多CPU架构优化Redis性能的方法。
主流的CPU架构要了解CPU对Redis具体有什么影响,我们得先了解一下CPU架构。
一个CPU处理器中一般有多个运行核心,我们把一个运行核心称为一个物理核,每个物理核都可以运行应用程序。每个物理核都拥有私有的一级缓存(Level 1 cache,简称L1 cache),包括一级指令缓存和一级数据缓存,以及私有的二级缓存(Level 2 cache,简称L2 cache)。
这里提到了一个概念,就是物理核的私有缓存。它其实是指缓存空间只能被当前的这个物理核使用,其他的物理核无法对这个核的缓存空间进行数据存取。我们来看一下CPU物理核的架构。
因为L1和L2缓存是每个物理核私有的,所以,当数据或指令保存在L1、L2缓存时,物理核访问它们的延迟不超过10纳秒,速度非常快。那么,如果Redis把要运行的指令或存取的数据保存在L1和L2缓存的话,就能高速地访问这些指