极客时间《Redis 核心技术与实战》学习笔记
Redis单线程模型
Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。
为什么Redis采用单线程
通常的程序设计都采用多线程来提高性能,获得更快的响应速度。
但采用多线程模型将不可避免地面对以下问题:
- 多个线程对同一资源的数据竞争
- 因解决数据竞争而导致的性能损耗
- 增加系统复杂度,降低系统代码的易调试性和可维护性
为啥Redis单线程还这么快
主要是两点:
- Redis大部分操作在内存上完成,并采用了高效的数据结构
- Redis采用了多路复用机制