Redis为什么快?基于内存就完事了?无视Redis如此完美的数据结构,设计师表示已经哭晕在了厕所里

原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重。本文参照《Redis设计与实现》(黄健宏 著)

前言

Redis 是面试官考察的重点,因为它的确是生产上经常使用的技术。它的优点很多,其中有一点尤为重要,也是绕不开要提的,就是“快”!!

我想,稍微了解一点 Redis 的都知道它常用的五种数据类型:string,list,set,sorted set,hash。

再深一点的问,Redis 为什么是单线程的?又为什么快?底层存储?持久化策略?雪崩?击穿?并发?分布式?... 一套组合拳下来,有木有稍微触及到你的知识盲区?

考点太多啦,但这些都不是我要解释的,O(∩_∩)O哈哈~~。

想了解《Redis常见面试题》的同学,不要慌,请看我的另一篇博文:敬请期待

就Redis为什么快而言,绝不是一句“单线程+基于内存”就可以解释清楚的。我今天就想带大家摸一摸面试官的天花板,了解面试官究竟想要什么。

喜欢干货的同学,好好学习本篇就OK了。有兴趣研读原著的,我在百度云盘为大家分享了《Redis设计与实现》电子书(永久有效):

链接:https://pan.baidu.com/s/1GCSTZDVd4vpcyqbEMlpttQ 
提取码:omcc


一、Redis为什么快?

单线程+基于内存?可以,没毛病,下面重点补充一些你可能不知道的。

Redis 是由 C 语言编写的,C 语言如此完善一定是有自己传统的字符串,但是 Redis 却弃之不用(并非完全不用,下面有解释),而是自己构建了一种名为简单动态字符串(simple dynamicstring,SDS)的抽象类型,并将 SDS 用作 Redis 的默认字符串使用。

  • 当 Redis 需要的不仅仅是一个字符串字面量(string literal),而是一个可以被修改的字符串时,就会使用 SDS 来表示字符串的值;
  • 而原本的 C 语言字符串只会作为字符串字面量,用在一些无须对字符串值进行修改的地方,比如,打印日志:redisLog(REDIS_WARNING,"Redis is so fast...")。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java Punk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值