1、内存型数据库
Redis 是完全基于内存的数据库,它绝大部分请求是纯粹的内存操作,所以快速。
2、特殊的数据结构
Redis 支持5种数据类型:String、List、Hash、Set 和 Zset,数据结构相对简单,所以操作起来也相对快速。
3、单线程
Redis 采用单线程模型,单线程的好处就是避免了多线程对数据竞争的问题,加锁的问题和上下文的切换问题。
那为什么要采用单线程呢,官方给我们的解释是:Reids 的瓶颈不在CPU,而在于内存或者网络的带宽,综合考虑后采用了单线程。这里的单线程也特指在处理网络请求是只使用一个线程,而 Redis 本身在持久化的时候还是会用到额外的线程,为此在 Redis4.0开始也支持了多线程,但也只是针对部分命令采用,例如:UNLINK、FLUSHALL 等。
4、IO多路复用
Redis 采用了非阻塞的IO多路复用技术。Redis本身就是一个事件驱动程序,Redis 把 socket 抽象成文件事件。所以这里说的IO多路复用就是文件事件处理器以单线程的方式,来监听相关的套接字(accept、read、write、close)
总结:
1、Redis 是内存型数据库
2、 Redis 特殊的数据结构
3、单线程避免锁的竞争
4、IO多路复用
以上四点就是Redis是单线程,但是快的原因!