redis的简单抽象模型:
文件事件处理器===>保证redis单线程
多个socket ------->>>service socket 请求--->>
------->>>io多路复用程序
------->>>队列
------->>>文件处理分派器
------->>>各种事件处理器:
1.事件请求处理器
2.事件应答处理器
3.事件回复处理器
6.0版本后,队列中的 i/o网络网络协议处理 抽取出来做成了多线程处理
redis 高性能的原因:
高性能:
直接从redis中获取数据,减少与数据库交互,增加性能。
高并发:
转移部分数据到redis中,降低数据库的压力。
redis为什么快?
1.使用内存,数据结构类似于hashmap,操作的时间复杂度O(1)
2.redis的数据结构进行了专门的优化。
3.采用单线程,避免上下文切换和竞争条件,也不存在多进程或者多线程导致切换消耗cpu,并且不需要考虑各种锁。
4.使用多路复用的io模型,非阻塞io
5.redis自己构建了vm机制,因为调用系统函数,会浪费一定的时间去移动和请求。