为了账号安全,请及时绑定邮箱和手机立即绑定
立即订阅 试读

扫一扫 手机阅读

作者简言

大家好,我是陈雷,在慕课网出过课程《全方位深度剖析PHP 7底层源码》,并著有《PHP 7底层设计与源码实现》一书。在实际工作中,我们经常要用到Redis等NoSQL数据库,很多同学虽然会使用Redis命令,但对Redis底层数据结构和命令的实现了解不深,而很多非底层开发的同学对源码学习感到困难,别担心,本专栏就来带你熟练掌握Redis的底层数据结构和基本命令的实现。

陈雷

在快速发展的移动互联网环境下,业界都会使用一些缓存技术来提升性能,其中Redis是一个很好的开源缓存方案。

Redis是一款非常优秀的NoSQL数据库,既可以用作缓存,又可以落地以防内存数据的丢失。很多互联网企业都大量使用Redis做为缓存和数据库。

因此在很多开发场景中,开发者需要熟练使用Redis相关的命令,无论是用Java还是PHP做为客户端,都需要了解Redis的使用。那么开发者只掌握了Redis命令的使用是不是就足够了呢?答案是否定的。

在一些业务场景下,掌握Redis命令原理可以提升开发效率,比如对地理位置相关的信息进行计算时,使用Redis中GEO相关的命令可以带来事半功倍的效果,而这需要开发者详细了解Redis命令的底层实现,此其一。

其二,掌握Redis命令原理后,会对命令背后的实现了如指掌,让你做的技术选型更加合理,比如记录用户属性,就可以使用bit相关的操作,避免重复造轮子。

其三,读者掌握了Redis命令执行的生命周期,就能了解哪些命令是阻塞的,阻塞的原因是什么,什么场景下才可用,什么场景要避免,以提升性能。

相信每个开发者都有一颗深入研究技术的心,对于开源软件不满足于仅仅会用,还希望了解和掌握其原理,提升自己的技术高度。

本专栏首先介绍了Redis中基础的数据结构,继而分析了基于这些数据结构的Redis命令的实现。在专栏中,读者可以学习并快速掌握Redis的命令,避免在使用过程中踩一些坑;而掌握了Redis命令实现的基本原理后,在工作和学习中能更好地做技术选型,利用Redis更简单高效地实现业务需求,避免重复造轮子,提升研发效率。

本专栏分为上下两篇,上篇包含第2~7节,主要讲解了Redis源码中基本的数据结构,包括简单动态字符串(SDS)、跳跃表(SkipList)、压缩列表(ZipList)、字典(Dict)、整数集(intset)以及快速列表(quicklist),这些基本数据结构是Redis底层的基础,Redis的相关功能和命令都是基于这些数据结构实现的。入门级读者可以精读这部分内容,掌握Redis基本数据结构的同时,顺便温习并加深自己对数据结构的理解。

下篇包含第 8~16 节,其中第8节详细讲解了Redis命令执行的生命周期,从客户端到服务端,服务端解析命令、执行、返回客户端的整体过程,这是Redis命令原理的核心,需要重点理解;第 9~16 节讲解了Redis中常用命令的实现,具体包括键命令(Key)、字符串命令(String)、哈希表命令(Hash)、列表命令(List)、集合命令(Set)、有序集合命令(Sorted Set)、地理位置命令(GEO)和日志命令(HyperLogLog)。这部分对于经常使用Redis的读者是进阶和拔高的内容,需要了解和掌握。

此外,Redis的代码是使用C语言编写的,相对而言比较清晰易懂,也适用于希望能掌握C语言的读者阅读,相信精读一遍Redis的源码,后续再阅读用C语言编写的软件源码不再是问题。

希望通过这个专栏,让大家对Redis有更深刻的理解。

市面上不乏介绍Redis原理和使用的优秀书籍,本专栏的特色是深入代码细节,手把手地教读者学习和掌握Redis的源码。

专栏由浅入深,从基础的数据结构的细节讲起,到命令实现的进阶,能够让开发者在短时间内熟练掌握Redis命令的实现。

学习Redis命令的实现,提升技术高度,时不我待!

你能学到什么
  • 读者可以熟练掌握Redis的常用命令,理解和掌握底层的基本原理;
  • 在工作和学习中能更熟练地使用Redis,并更好地做技术选型;
  • 初阶读者可以掌握基本的数据结构,以应对面试中问到相关的数据结构知识;
  • C语言基础不牢的读者可以根据本专栏的介绍精读一遍Redis的核心代码,掌握C语言。
适合人群

本专栏适合以下人群阅读:

  • 对Redis底层实现感兴趣的开发者

  • 对NoSQL感兴趣的人

  • 想研究开源软件源码却不知如何开始的人

读者需要有一定的C语言基础,且使用过Redis。

专栏目录
作者介绍

陈雷

PHP开发工程师

陈雷,清华大学计算机系本科硕士,北邮工程管理硕士,滴滴高级专家工程师,畅销IT图书作者,著有《PHP7底层实现与源码分析》一书,同时也是慕课网热门讲师,推出实战课《全方位深度剖析PHP7底层源码》。12年工作经验的架构师,主要从事Web和移动互联网领域的底层开发,先后在百度、腾讯等公司工作。对后端相关开源软件有深刻理解。

方波,资深工程师,6年互联网产品研发经验,先后就职于360、百度、滴滴,设计并开发360Qbus消息系统、Nginx接入层、电商网站架构等分布式高并发系统。喜欢研究优秀开源项目代码和架构并学以致用。

黄桃,滴滴资深工程师,畅销IT图书作者,参著《PHP底层实现与源码分析》书籍,6年工作经验,主要从事互联网服务端研发与架构工作,熟悉PHP、Nginx、Redis等源码实现,对自身成长不设限,希望可以和学习者一起学习成长。

李乐,硕士毕业于西安电子科技大学,目前就职于滴滴,乐于钻研技术与源码研究,对Redis和nginx都有较深理解。

施洪宝, 东南大学控制科学与工程专业硕士, 曾发表EI论文2篇,现任滴滴后端研发工程师。熟悉C/C++开发, 对高并发、分布式有浓厚兴趣,对Redis, Nginx等开源软件也有较深的理解。

熊浩含,硕士毕业于国际关系学院,目前就职于滴滴,PHP开发者,乐于钻研技术难点,喜欢折腾。对Redis等开源软件有较深的学习和研究。在学习思路上有很好的方法论,希望能给学习者带来一些启发。

闫昌, 滴滴高级软件开发工程师,曾工作于信息安全领域多年,支持过央视网、人民日报等部门网络安全项目。对Linux下服务端开发有比较深的见解,擅长高并发业务的实现,对源码研究有比较浓厚的兴趣。

张仕华,滴滴资深软件开发工程师,毕业于北京科技大学,8年互联网从业经验。做过自动化运维项目技术管理,也曾于360从事企业级安全产品开发。热衷源码研究,熟悉Redis,Nginx等常用开源软件源码。

周生政,后端高级工程师,7年LNMP技术栈开发经验,4年电商经验,曾在北京环球购物电商担任后端技术负责人,经历过App从0到1的过程,掌握电商系统每个细节,目前在滴滴从事增长相关的后端研发。对开源系统有强烈的好奇心,现在主要研究LNMP的相关源码。

TA的实战课程

热门评价

查看全部评价
查看全部评价
购买须知
  1. 本专栏为图文形式内容服务,共计17小节,上线时间为 2019 年 1 月 24 日;
  2. 购买用户可享有专栏永久阅读权限,购买后可在“慕课网"APP端、wap端、PC端阅读;
  3. 慕课专栏为虚拟内容服务,购买成功后概不退款;
  4. 在专栏阅读过程中,如有任何问题,请邮件联系kf@imooc.com;
  5. 慕课专栏版权归北京奥鹏远程教育中心有限公司所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者将依法追究责任。
推荐专栏
更多

下载慕课网APP

更好的体验,让阅读随处可得

扫描二维码,下载慕课网APP
意见反馈 去赚学费 帮助中心 APP下载
官方微信