极客时间《Redis 核心技术与实战》学习笔记

Redis单线程模型

Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。

为什么Redis采用单线程

通常的程序设计都采用多线程来提高性能,获得更快的响应速度。

但采用多线程模型将不可避免地面对以下问题:

  1. 多个线程对同一资源的数据竞争
  2. 因解决数据竞争而导致的性能损耗
  3. 增加系统复杂度,降低系统代码的易调试性和可维护性

为啥Redis单线程还这么快

主要是两点:

  1. Redis大部分操作在内存上完成,并采用了高效的数据结构
  2. Redis采用了多路复用机制