redis单线程为什么速度快

1、基本概念:一块2.gGHz的CPU,一秒可以处理2.6*10^9 条命令,一条指令就是0.38ns,切换一次线程耗时2000ns,切换线程开销是大的。
2、那为什么有多线程:硬盘存取时间远远大于内存。当cpu在等待硬盘的时候,它可以先去做别的事情,比如等硬盘要一个小时,保存现场需要十五分钟,
那就还有剩下的四十五分钟可以利用,不用cpu一直在等硬盘。
3、redis特性:redis是基于内存的,也就是说它不和硬盘打交道,那cpu也就不用花很多时间等硬盘,只要内存数据存取好就好了
(猜测:内存存取时间比切换线程少或者差不多),这时候如果切换了线程那内存读出来的数据还得等cpu,所以不要切换线程了,直接单线程。


1、切换一次线程的时间可以用来执行多条cpu指令,然后读取内存的时间又远远小于读取硬盘的时间
2、以往的程序需要读取硬盘,所以在等待硬盘的时候可以用来执行其他线程,反正等着也是等着,不如利用这段时间多做点事情
3、redis是基于内存的,这里再引入缓存的概念 (缓存的工作原理
  缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,
    同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。
  正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,
    只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。)

    换句话说就是面向缓存/内存的话需要查找数据很多时候不用等,这时如果再切换线程的话就浪费时间了。
    
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值