redis底层是单线程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MrZhangXL/article/details/53897254

一直有个错觉就是,redis底层命令是并发执行的,但今天查看若干资料后发现,redis底层是单线程的,也就是说多客户端向redis服务器发送操作命令,redis底层是串行执行的,这样不禁怀疑这样不是很慢吗?后经过进一步探究,得出结论:
1 单线程并不一定比多线程慢,多线程需要不停切换上下文,本身就有性能损失
2 内存型数据库的瓶颈在IO,因为其数据本身就是在内存里面,不需要频繁的与磁盘做交互,IO主要在接收请求和响应结果上,redis采用Linux的epoll机制,epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。

所以redis快在

1 基于内存 2 IO采用异步非阻塞epoll机制

没有更多推荐了,返回首页