2023-03-23 19:39:14
Redis选择单线程的原因:
Redis快的原因:

同步IO模型的高效利用:IO多路复用是一种同步的IO模型,它使用一个线程监视多个文件句柄。当没有文件句柄就绪时,程序进入阻塞状态,释放CPU资源,避免了CPU在等待IO操作时的空转,提高了CPU的利用率。
多客户端连接的高效处理:“多路”指的是多个客户端socket连接,“复用”是指复用线程。通过将客户端socket对应的文件描述符注册进epoll(一种IO多路复用机制),epoll会监听哪些socket有消息。socket采用非阻塞模式,整个过程只在调用select、poll、epoll时才会阻塞,收到客户端消息不会阻塞,使得单线程能够同时处理多个客户端socket连接,提高了服务器的吞吐能力。
Redis4.0引入多线程异步删除:解决了一直存在的BigKey问题,正式打开了Redis多线程的新篇章,进一步提升了性能。
Redis6.0引入IO多线程的读写:更高效地处理请求。虽然命令的执行还是由主线程单线程执行,但IO读写变成多线程,在保证线程安全的同时提高了请求处理效率。
