redis是单线程的处理命令的,还会达到每秒万级别的处理能力呢?
原因有3点
1.纯内存访问
redis将所有数据放在内存中,而内存的响应时间很快,大约为100纳秒
2.非阻塞I/O
Redis使用epoll作为I/O多路复用技术的实现,不在网络I/O上浪费过多的时间
3.单线程避免了线程切换和竞态产生的消耗
单线程能带来2个好处
单线程可以简化数据结构和算法的实现
避免线程切换和竞态产生的消耗,锁和线程切换通常是性能杀手。
单线程的问题
但是单线程会有一个问题:对于每个命令的执行时间是有要求的。如果某个命令执行过长,会造成其他命令的阻塞,对于Redis这种高性能的服务来说是致命的,所以Redis是面向快速执行场景的数据库。
网友评论