简谈Redis的线程模型

Redis真的是单线程的吗 ?

Redis的单线程主要是指处理网络IO请求和键值对的读写是单线程的,
其他的操作比如持久化, 集群数据同步等, 则是依赖多线程来处理的

为什么说Redis单线程速度这么快?

单线程的优势

  1. Redis是基于内存的Nosql数据库, 绝大部分网络请求在内存上完成, 速度快.
  2. Redis使用了单线程, 避免了多线程的资源切换或者竞争.
  3. 使用IO多路复用模型, 使其在IO网络操作中能并发的处理大量的客户端请求.
    单线程的劣势 :
    如果某个命令执行时间过长, 会造成其他命令的阻塞, 这个对于Redis这个高性能服务器来说是致命的

IO多路复用

在这里插入图片描述

  1. 多个客户端对应多个服务端socket来处理(监听)
  2. 每个socket将读请求或者写请求发送给IO多路复用程序
  3. IO多路复用程序再将各个请求依次放入队列中, 这样一个线程就可以先后处理各个请求了
  4. 文件事件分派器再一个一个进行处理并且对其分类
  5. 最后处理完成就返回给客户端

猜你喜欢

转载自blog.csdn.net/m0_53804791/article/details/121456008
今日推荐