python3 redis 获取整个 hash表_Redis核心剖析:为什么这么“快”的秘密

学习一个技术,通常只接触了零散的技术点,没有在脑海里建立一个完整的知识框架和架构体系,没有系统观。这样会很吃力,而且会出现一看好像自己会,过后就忘记,一脸懵逼。

系统观其实是至关重要的,从某种程度上说,在解决问题时,拥有了系统观,就意味着你能有依据、有章法地定位和解决问题。

Redis 全景图

全景图可以围绕两个纬度展开,分别是:

应用纬度:缓存使用、集群运用、数据结构的巧妙使用

系统纬度:可以归类为三高

  1. 高性能:线程模型、网络 IO 模型、数据结构、持久化机制;
  2. 高可用:主从复制、哨兵集群、Cluster 分片集群;
  3. 高拓展:负载均衡

Redis 系列篇章围绕如下思维导图展开,这次从 《Redis 唯快不破的秘密》一起探索 Redis 的核心知识点。

7ff10c0122658e77382bd84cc0db9383.png

唯快不破的秘密

65 哥前段时间去面试 996 大厂,被问到「Redis 为什么快?」

“ 65 哥:额,因为它是基于内存实现和单线程模型 ”

面试官:还有呢?

“ 65 哥:没了呀。 ”

很多人仅仅只是知道基于内存实现,其他核心的原因模棱两可。今日跟着小编一起探索真正快的原因,做一个唯快不破的真男人!

Redis 为了高性能,从各方各面都进行了优化,下次小伙伴们面试的时候,面试官问 Redis 性能为什么如此高,可不能傻傻地只说单线程和内存存储了。

14322b30bc4601b8fe4209ae1c6a08c3.png

根据官方数据,Redis 的 QPS 可以达到约 100000(每秒请求数),有兴趣的可以参考官方的基准程序测试《How fast is Redis?》,地址:https://redis.io/topics/benchmarks

72565e351e05048894804b39f37a3daa.png

横轴是连接数,纵轴是 QPS。此时,这张图反映了一个数量级,希望大家在面试的时候可以正确地描述出来,不要问你的时候,你回答的数量级相差甚远!

完全基于内存实现

“ 65 哥:这个我知道,Redis 是基于内存的数据库,跟磁盘数据库相比,完全吊打磁盘的速度,就像段誉的凌波微步。对于磁盘数据库来说,首先要将数据通过 IO 操作读取到内存里。 ”

没错,不论读写操作都是在内存上完成的,我们分别对比下内存操作与磁盘操作的差异。

磁盘调用栈图

feaea2d5071b9cdd1089c3f1f6583962.png

内存操作

内存直接由 CPU 控制,也就是 CPU 内部集成的内存控制器,所以说内存是直接与 CPU 对接,享受与 CPU 通信的最优带宽。

Redis 将数据存储在内存中,读写操作不会因为磁盘的 IO 速度限制,所以速度飞一般的感觉!

最后以一张图量化系统的各种延时时间(部分数据引用 Brendan Gregg

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值