dengwen3 发表于 2015-7-23 13:40:15

redis 2.8.21/3.0.2 发布

Memcached/Redis/SSDB网络IO模型对比:  Memcached是多线程非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,
  接受请求后,将连接描述字pipe传递给worker线程,进行读写IO,
  网络层使用libevent封装的事件库,多线程模型可以发挥多核作用,但是引入了cache coherency和锁的问题,
  比如,Memcached最常用的stats命令,实际Memcached所有操作都要对这个全局变量加锁,进行计数等工作,带来了性能损耗.
  
  Redis使用单线程的IO复用模型,自己封装了一个简单的aeEvent事件处理框架,主要实现了epoll/kqueue/select,
  对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是Redis也提供了一些简单的计算功能,比如排序/聚合等,
  对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的.
  
  Memcached(libevent):多线程,epoll事件驱动.
  Redis(aeEvent):单线程,epoll事件驱动.
  SSDB(LevelDB引擎,epoll网络):多线程,epoll事件驱动.
  SSDB新版本采用了多线程模型,避免写操作阻塞读操作:
  1个主线程,负责网络IO.
  10个读线程,负责像scan复杂操作读.
  1个写线程,负责写操作磁盘IO.
  1个leveldb的compact线程.
  也就是set写操作时,一个主线程负责网络,一个写线程负责leveldb操作;而get读操作时只有主线程在工作.
页: [1]
查看完整版本: redis 2.8.21/3.0.2 发布