概述
Redis是单线程的,并且效率非常高
一、首先我们来解决Redis为什么这么快
Redis是基于内存的采用的是单进程单线程的非关系型kv数据库,底层是由C语言编写的,官方给出的性能测试结果是可以达到10w+QPS。
Redis效率非常高的原因有下面几点:
- Redis是完全基于内存的。众所周知,在内存中读写数据是非常快的,而Redis的绝大部分操作基本上都是基于内存的操作;
- Redis是单线程,没有多线程间的上下文切换和线程调度等问题,也没有各种锁的问题,多线程之间保证同步是时分耗时的操作,但是由于Redis是单线程的,所以避免了这些消耗效率的问题;
- 数据结构以及相应的各种操作也比较简单,Redis中的数据结构都是专门设计的;
- 使用多路I/O复用模型,非阻塞IO(对这东西还不太了解);
- Redis构建了自己的VM机制以提高效率,因为如果是通过调用系统函数来实现的话会消耗额外的时间。
二、接着来解决Redis为什么是单线程的
官方给出的解释是,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。而且,基于第一部分对于Redis为什么那么快的解释,我们已经知道Redis在单线程情况下已经是非常快的了,如果是使用多线程的话,可能还会因为一些上下文切换、线程安全等问题导致效率降低,所以没有必要使用多线程来实现。(简单来说,单线程已经很快了,没有必要再使用多线程了)
**注意:**这里一直在强调的单线程只是指在处理我们的网络请求的时候只有一个线程来处理,但是Redis服务器在运行的时候不是只有一个线程的,例如在进行持久化的时候Redis主进程会fork出一个子进程来完成持久化。
参考文章:
https://blog.csdn.net/chenyao1994/article/details/79491337
最后
以上就是结实裙子为你收集整理的Redis是单线程的,并且效率非常高Redis是单线程的,并且效率非常高的全部内容,希望文章能够帮你解决Redis是单线程的,并且效率非常高Redis是单线程的,并且效率非常高所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复