《Redis高手心法》:想要成为Redis高手?不如看看这本顶峰之作!

C语言与CPP编程 2024-08-05 09:00

大家好,我是飞宇。

前几天出版社给我送了一本《Redis高手心法》,我认真看了下,挺好的,不管是内容还是插图画的都很好,今天给大家分享一下,文末也有赠书活动,欢迎大家参与

作为当今广受欢迎的内存数据库,Redis以其卓越的性能和广泛的应用场景著称。

掌握Redis技术几乎成为每位开发人员、测试人员和运维人员的看家本领!

微信公众号「码哥跳动」(原「码哥字节」,后改名为「码哥跳动」)主理人码哥持续输出的Redis技术相关文章受到广大读者的喜爱,不少小伙伴都从中受益!

在大家的持续催更下,码哥的这本《Redis高手心法》终于和大家见面了!

作者将复杂的概念与实际案例相结合,以简洁、诙谐、幽默的方式揭示了Redis的精髓。

本书不仅是学习 Redis 的必备指南,更是驾驭 Redis 强大功能的秘籍。

无论你是初学者还是经验丰富的开发者,都会在阅读本书的过程中得到启发与收获。

如果你希望站在Redis的顶峰,那么《Redis高手心法》绝对是你不可或缺的利器!

千古无同局,叶底能否藏花,我们未来印证,愿此心法能让你学有所成!

下面就让码哥带我们一探本书的究竟,提前领略一下其中精彩纷呈的内容吧~~



文/码哥

1打磨只为呈现完美的作品

Chaya:码哥,Redis 这么快,你咋就这么慢呢?从恋爱到生娃都没你这么久。

写书的难度可比写公众号文章大多了。公众号的文章,可能有一些错别字,也有可能存在语病。

编写书的话,要求严格多了,语言要精准正确,不能存在错别字和语病,内容需要循序渐进有层次感,还要经过出版社老师的多次审核、校正,每一段话和文字都是我们精心「雕刻」的成果。

此外,我经过多年对 Redis 的深耕,花了很多时间重新梳理了 Redis 技术架构,加入了 Redis 6.0 ~ 7.0 版本的各种全新特性,从更深层次的角度挖掘底层实现原理,并尽量用风趣幽默的语言和 158 张图片解释难懂的技术点

作为后端开发者的我深刻知道,学习是一件比较难的事情,所以我就想着站在开发者的角度,用拟人化、场景化诙谐幽默的言语,再加撩人心弦又准确图片让读者轻松愉快地学习 Redis 实现原理和开发实战技巧。

总之一句话,每一个章节都经过反复推敲,只为呈现出最精彩的内容给你们。在我花费了大量精力更系统更全面地规划,以及出版社老师不断编排打磨,《Redis 高手心法》纸质书成为了去繁存简,精益求精的作品,就好像从钢铁侠战甲马克1 号,进化到成功拿下灭霸一血的马克 85 战甲。

Chaya:网络资料很多,但碎片化严重,如何才能成为 Redis 高手,建立完整的知识框架?

本书基于 Redis 7.0 版本的源码来讲解,并建立了一个完整的 Redis 知识框架,从全局视角整理 Redis 知识体系,结合难点给出158 张图片,希望能让你们更容易理解。

对于一门技术,如果只接触了零散的技术点,没有在脑海里建立⼀个完整的知识框架和架构体系,没有系统观,就会很吃力,而且会出现一看好像会,过后就忘记,⼀脸懵逼的情况。

我会引导大家从全局出发,带着问题去寻找答案,尝试输出对一个技术点的思考和理解。

⼀起搭建⼀套完整的知识框架, 学会从全局视角整理整个知识体系

2欲练此功不必自宫只需放松

本书的特点是 Redis 化身成人,将复杂的概念与实际案例相结合,以简洁诙谐幽默的方式,为你揭示 Redis 的精髓

从 Redis 作为第一人称视角出发,以拟人故事化的方式和诙谐幽默的语言与各路“神仙”对话,配合 158 张图片,由浅入深循序渐进地讲解 Redis的数据结构实现原理。

现在新书上市,优惠力度特别大,原价 100,现在 5 折优惠,只需要 50 灵石,推荐大家趁着这个机会,赶紧冲一波,拍下《Redis 高手心法》 秘籍,早日修炼天阶斗技。


由于篇幅有限,接下来我从书中摘取少量内容,给大家感受下文字和图片的温度......


2.1底层数据结构实现原理

天下武功,无坚不摧,唯快不破!我的名字叫 Redis,全称是 Remote Dictionary Server。

Chaya:我知道你支持很多种数据类型,对于不同的数据类型,底层应该用了多种数据结构来实现存储吧?

Chaya 小姐姐很聪明,我给开发者提供了 String(字符串)、Hashes(散列表)、Lists(列表)、Sets(无序集合)、SortedSets(可根据范围查询的排序集合)、Bitmap(位图)、HyperLogLog、Geospatial(地理空间)和 Stream(流)等数据类型。

为了在速度和内存占用之间找到最优解,我设计了多种数据结构。总之为了实现多快好省(支持数据类型多、速度快、好用、节省内存)。

MySQL:“就拿 Sting 类型来举例吧,C 语言本就有字符串,为嘛还自己搞了一套字符串类型,吓唬谁呢?!”

格局能不能打开一点儿,我并没有直接使用 C 语言的字符串,而是自己搞了一个 SDS 的结构体来表示字符串。

为了支持丰富和高性能的字符串操作函数、保存二进制格式数据、节省内存,以及实现“既 要又要还要”的目标。

SDS 中的 len 字段保存了字符串的长度,实现了 O(1) 时间复杂度获取字符串长度。

SDS 结构有一个 flags 字段,表示的是 SDS 类型。实际上 SDS 一共设计了 5 种类型,分别是 sdshdr5、sdshdr8、sdshdr16、sdshdr32 和 sdshdr64,区别在于数组的len 长度和分配空间长度 alloc 不同。

struct __attribute__ ((__packed__)) sdshdr8 {
   uint8_t len;
   uint8_t alloc;
   unsigned char flags;
   char buf[];
};

节省内存

之所以这么设计,是因为使用不同的 SDS 类型保存不同大小的字符串可以节省内存。

二进制格式数据安全

SDS 不仅可以存储字符串类型数据,还能存储二进制格式数据。SDS 并不是通过“\0” 来判断字符串结束的,而是采用 len 标志结束,所以可以直接存储二进制格式数据。

编码格式

我还对字符串类型的数据采用了三种编码格式来存储,分别是 int、embstr 和 raw,你可使 用 OBJECT encoding key来查找对象所使用的编码类型。

空间预分配

当对 SDS 进行缩短操作时,程序并不会回收多余的内存空间,如果后面需要 append 追 加操作,则直接使用 buf 数组 alloc -len 中未使用的空间。

通过惰性空间释放策略,避免了减小字符串所需的内存重新分配操作。

篇幅有限,更多的底层数据结构实现原理详见《Redis 高手心法》,不再一一列举......


2.2RDB 与 AOF

Chaya:Redis 数据保存在内存,如果没有持久化,一旦断电或者宕机,保存在内存中的数据将全部丢失,咋办呢?

我有两大撒手锏,可以实现数据持久化,做到宕机快速恢复,“不丢数据稳如山”,无须从数据库中慢慢恢复数据。它们就是 RDB 快照和 AOF(Append Only File)。

MySQL:“在实际生产环境中,程序员通常会给你配置 6GB 的内存,将这么大的内存数据生成 RDB 快照文件落到磁盘的过程会持续比较长的时间。你如何做到在继续处理写命令请求的同时保证 RDB 与内存中的数据一致呢?”

作为唯快不破的 NoSQL 数据库扛把子,我在对内存数据做快照时,并不会暂停写操作(读操作不会造成数据的不一致)。

我使用了操作系统的多进程写时复制技术(Copy On Write ,COW)来实现快照持久化。

Chaya:“随着写入操作持续执行,AOF 日志过大怎么办?文件越大,数据恢复就越慢。”

为了解决 AOF 文件体积膨胀的问题,创造我的 Antirez 老哥设计了 AOF 重写机制(AOF Rewrite),对文件进行瘦身。

每次 AOF 重写时,Redis 都会先执行内存复制操作,让 bgrewriteaof 子进程拥有此时的 Redis 内存快照,子进程遍历Redis 内存快照中的全部 field-value pairs,生成重写记录。

MySQL:在 AOF Rewrite 过程中,主进程除了把写命令写入 AOF 缓冲区,还要把写命令写入 AOF 重写缓冲区。一份数据要写入两个缓冲区,还要写入两个 AOF 文件,产生两次磁盘 I/O,太浪费了。

上述的 AOF Rewrite 操作是 Redis 7.0 之前的逻辑,俗话说得好,“只要思想不滑坡,办法总比困难多”。为了解决性能问题,7.0 版本开始引入 Multi-Part AOF 机制。

篇幅有限,Multi-Part AOF 具体实现原理详见《Redis 高手心法》,这里不在一一列举。

2.3主从复制架构

Chaya:“有了 RDB 快照和 AOF 再也不怕宕机丢失数据了,但是 Redis 实例宕机了怎么办?如何实现高可用呢?”

Chaya 愣了一会儿,又赶紧补充道:“依然记得那晚我和我的恋人鸳语轻传,香风急促,走在成都的街头约会。可是这时候 Redis 忽然宕机了,无法对外提供服务,电话连环 call,岂不是折煞人也“。

莫怕,为了你们的幸福。我提供了主从模式,通过主从复制,将一份冗余数据复制到其他 Redis 服务器,实现高可用。你们放心地说温存,说风月。

Chaya:“master 和 slave 的同步是如何完成的呢?master 的数据是一次性传给 slave,还是分批同步?主从正常运行期间又怎么同步呢?要是 master 和 slave 间的网络断连了,重新连接后数据还能保持一致吗?”

你问题怎么这么多?不要急。我知道你想安心地与恋人相会,不受 Redis 宕机导致的服务报警的干扰。主从数据同步分为 4 种情况。

◎ master 和 slave 第一次全量同步。

◎ master 和 slave 正常运行期间的数据同步。

◎ master 和 slave 网络断开重连同步。

主从库第一次复制过程大体可以分为 3 个阶段:建立连接阶段(准备阶段)、同步数据阶段、发送同步期间接收的新写命令到 slave 阶段。


更多细节,详见《Redis 高手心法》......


2.4哨兵集群

主从复制架构面临一个严峻问题:master 宕机,无法执行写操作,无法自动选择一个 slave 切换为 master,也就是无法实现故障自动切换。

Chaya 的恋人:“眼前是橡树的绿叶,白色的竹篱笆。好想告诉我的她,这里像幅画。一起手牵手么么哒(此处省略 10000 字)Redis 忽然宕机,我总不能把 Chaya 推开,停止甜蜜,然后打开电脑手工进行主从切换,再通知其他程序员把地址改成新master 的信息上线?”。

如此一折腾恐,想必你心里的雨倾盆地下,万万使不得。所以必须有一个高可用的方案,为此,我提供一个高可用方案——哨兵(sentinel)。

哨兵是 Redis 的一种运行模式,它专注于对 Redis 实例(master、slave)运行状态的监控,并能够在 master 发生故障时通过一系列的机制实现选主及主从切换,实现自动故障切换,确保整个Redis 系统的可用性。

你就可以安心地与你的恋人 Chaya 在欢乐港湾约会,尽情享受甜蜜,哪怕是吵架都那么醉人,不再需要担心 Redis 忽然宕机带来的烦恼。

我们先从全局看哨兵,简要地了解它的整个运作流程,接着针对每个任务详细分析,Redis 哨兵的主要职责如下。

Chaya:“来说下实现原理吧。”

篇幅有限,我就不继续细说实现原理的细节了,现在新书上市,优惠力度很大,原价 100,现在 5 折优惠,各位道友只需拿出 50 灵石,购买查看完整版的《Redis 高手心法》进行修炼。


限时五折优惠,快快抢购吧!



感兴趣的小伙伴可以点击上面链接购买


赠书活动

点击下方公众号,回复 抽奖 二字即可参与抽奖,注意不是本号哈

如下所示

欢迎 在看留言分享至朋友圈 三连

C语言与CPP编程 C语言/C++开发,C语言/C++基础知识,C语言/C++学习路线,C语言/C++进阶,数据结构;算法;python;计算机基础等
评论
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 239浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 159浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 94浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 38浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 176浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 118浏览
  • 随着消费者对汽车驾乘体验的要求不断攀升,汽车照明系统作为确保道路安全、提升驾驶体验以及实现车辆与环境交互的重要组成,日益受到业界的高度重视。近日,2024 DVN(上海)国际汽车照明研讨会圆满落幕。作为照明与传感创新的全球领导者,艾迈斯欧司朗受邀参与主题演讲,并现场展示了其多项前沿技术。本届研讨会汇聚来自全球各地400余名汽车、照明、光源及Tier 2供应商的专业人士及专家共聚一堂。在研讨会第一环节中,艾迈斯欧司朗系统解决方案工程副总裁 Joachim Reill以深厚的专业素养,主持该环节多位
    艾迈斯欧司朗 2025-01-16 20:51 191浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 221浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 141浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 153浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 70浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 103浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦