redis单线程为什么这么快?

2019-12-04  本文已影响0人  forever_hl_1108

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

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

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

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

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

优点:

最大利用cpu

缺点:

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

2.线程之间锁竞争

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

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

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

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

上一篇下一篇

猜你喜欢

热点阅读