美文网首页
redis单线程为什么这么快?

redis单线程为什么这么快?

作者: forever_hl_1108 | 来源:发表于2019-12-04 11:38 被阅读0次

    很多人都在问这个问题,网上也有很多回答,但我觉得说的都不够好,我说说自己的看法。

    首先,程序员喜欢讨论“快”,快,究竟有多块?

    redis官方数据大概说是5w/s,但这种beanchmark测试应该是没用到多种数据结构的,和商业生产环境不一样。

    大家认为多线程就应该快,单线程就应该没那么快,redis居然单线程还能支持那么高并发,所以快。

    问题来了,多线程的优缺点是啥?

    优点:

    最大利用cpu

    缺点:

    1.线程之间的切换是有代价的

    2.线程之间锁竞争

    3.多线程让系统复杂度大大提升

    那么,redis究竟是不是cpu密集型呢?那肯定不是的,只有大量运算、hash等才是cpu密集型,redis是一个内存数据库,不是cpu密集型的。

    多线程万一弄了个bug,结果未必是使用者能承受的,因为它的持久化无论aof,rdb都是不安全的,都有丢数据的风险,这点与mysql这种db不一样,安全性没mysql高。

    所以,多方面考虑redis作者才采用单线程开发redis。里面的数据结构也是用的很好,数据量小时用压缩列表,现在的机器在纯操作内存就是能支持那么高的并发。

    相关文章

      网友评论

          本文标题:redis单线程为什么这么快?

          本文链接:https://www.haomeiwen.com/subject/nfgkgctx.html