Redis是一中由C语言编写,支持多种语言的NoSQL数据库,因为其优越的性能和快速的读写而被普遍使用,那它为何这么快呢,主要有如下几个缘由:redis
- 纯内存操做
Redis的数据所有存储在内存里,查找与操做的时间复杂度都为O(1),因此速度比较快。数据库
- 单线程
Redis速度快的另外一个缘由就是其读取写入都是单线程操做,减小了线程切换而形成的CPU开销。网络
- IO多路复用模型
这里“多路”指的是多个网络链接,“复用”指的是复用同一个线程。内部采用epoll代理,epoll会同时监察多个流的IO事件,在空闲时,当前线程进入阻塞,若是有IO事件时,线程会被唤醒,而且epoll会通知线程是哪一个流发生了IO事件,而后按照顺序处理,减小了网络IO的时间消耗,避免了大量的无用操做。性能
最后附上redis运行时原理图。 线程