1. 纯内存操作,肯定快

数据存储在内存中,读取的时候不需要进行磁盘的 IO

2. 单线程,无锁竞争损耗

单线程保证了系统没有线程的上下文切换

使用单线程,可以避免不必要的上下文切换和竞争条件,没有多进程或多线程引起的切换和 CPU 的消耗,不必考虑各种锁的问题,没有锁释放或锁定操作,不会因死锁而降低性能;

3. C 语言实现,更接近底层操作

Redis 是用 C 语言开发完成的

4. 多路 I/O 复用模型,非阻塞 IO

采用多路 I/O 复用技术可以让单个线程高效的处理多个网络连接请求(尽量减少网络 IO 的时间消耗)

非阻塞 IO 内部实现采用 epoll,采用了 epoll + 自己实现的简单的事件框架。epoll 中的读、写、关闭、连接都转化成了事件,然后利用 epoll 的多路复用特性,绝不在 io 上浪费一点时间。

5. 数据结构简单,底层又做了优化