Redis 的速度为什么这么快
这里的速度快,Redis 的速度快是与 MySQL 等数据库相比较的,与直接操作内存数据相比,Redis 还是略有逊色。
Redis 是一个单线程模型,为什么比其他的多线程程序还要快,原因有以几点:
1、访问的对象不同
Redis 访问内存,而其他数据库是直接访问硬盘,操作内存数据一定比操作硬盘数据要来得更快。
2、Redis 的操作通常都是 “短平快”
所谓 “短平快”,就是 Redis 的操作通常只是一些简单的操作,相比于其他数据库的复杂操作,Redis 的操作所消耗的资源更少,速度也是更快的。
3、Redis 是单线程模型
这里的单线程,不是 Redis 整个程序只有一个线程,而是只使用了一个线程来处理指令,在处理网络 IO 时使用的也是多线程。
使用单线程来处理指令,就能避免线程之间的竞争,从而就没有线程之间的竞争开销。
4、处理网络 IO 时,使用了IO多路复用的机制
上面说了,Redis 在处理网络请求时使用的是多线程模式,也就是一次能接收多个请求,但引入 IO多路复用(如 epoll 等机制)后,就能只使用较少的线程去处理多数的请求(前提是这些请求是不频繁的,线程大多数时间都在等)。