1.redis支持的操作为纯内存操作,可异步地持久化到硬盘文件中。
2.单线程,避免了多线程上下文切换的消耗。
负责存取的线程只有一个,首先cpu一般不是io的瓶颈(一般是宽带和内存),这时如果只用一个线程来进行存取,就有效率得多。
确切的来说是个历史遗留问题,redis6.0已经支持多线程了,效率大幅提升
同时,并发不是并行(并发性I/O流,让一个单元处理多个客户端的流请求,并行指的是服务器同时执行几个任务,需要多个计算单元)
3.数据结构简单,对数据的操作也简单。
4.底层模型不同,redis自行创建了vm机制,避免了调用系统函数进行请求和移动。
5.多路I/O复用模型,非阻塞I/O
利用select,poll,epoll来同时监听多个事件I/O的能力,空闲的时候,把当前线程阻塞,当有一个或者多个流有I/O事件时,就从阻塞状态中唤醒,后轮询一遍所有的流(epoll只轮询那些真正发生事件的流),并且按顺序处理就绪的流,避免了无用操作。
多路指的是多个网络连接,复用指的是复用同一个线程,采用多路I/O复用可以让单线程高效地处理多个网络连接的请求,减少在网络I/O上的消耗,并且redis在内存中操作数据的速度是很快的,以上几点也就是redis具有很高吞吐量的原因。
浙公网安备 33010602011771号