前言:此系列根据作者在《NoSQL》数据库技术与应用一书校园课堂上,对于老师的提问地收集与回答,“(P1)”为此书书页。部分为开放性问题,若有错误,欢迎提出与指正;若有疑问与补充,欢迎在评论区探讨。望各位理性发言、友好交流、互相进步。


问1:Redis 的创始人 Salvatore Sanfilippo 和 Redis 另一名主要代码贡献者 Pieter Noordhuis 最开始是专业学习代码的吗?(P205)

答:

① Redis 的创始人 Salvatore Sanfilippo ——出生于西西里岛,一名意大利程序员,也被称为 Redis 之父,旁人常称呼他为 Antirez 。Antirez大学考上巴勒莫建筑大学,大三选择辍学后转入IT行业,成为一名日常维护机房运作的系统管理员。这样看来,这位 Redis 之父的人生轨迹应该和 Redis 毫不沾边才是。但是 Antirez 特别喜欢开创“副业”,喜欢在业余时长琢磨编程。1999年他发明了 Idle Scan 空闲扫描技术,这被黑客用来扫描传输控制协议(TCP)端口,映射被黑系统并找出漏洞攻击;2006年他写了开源数据包生成器和分析器“Hping”,后来被系统安全运维人员广泛用于防火墙和网络安全测试。此外还有很多副业项目围绕在他身边。

在2007年,Antirez 创建了一个访客信息追踪网站LLOOGG.com。这主要用于网络安全监控和数字营销优化,可以检测哪些人在实时浏览自己的网页:看了什么,用什么浏览器看的,操作端等相关信息。可当最大负载达到每秒数千条页面记录时,Antirez 发现无论他用什么样的数据库模式,无论怎样优化,自己所使用的关系数据库都没办法在小虚拟机上处理如此大的负载,而囊中羞涩的他也没办法对虚拟机进行升级。所以如书中(P205)所说“对 MySQL 的性能感到失望,于是他决定亲自为LLOOGG量身定制一个数据库”。就这样,2009年,Redis 诞生了。

Redis 初问世时也被人质疑过,但就像 Antirez 所说:实际上,他对数据库的“缺乏经验”,使得他敢于打破“良好”数据库工程的各种神圣规则。“最终,我决定自己写一个实验性质的内存数据库原型( prototype),这个数据库使用列表作为基本数据类型,并且能够对列表的两端执行常数时间复杂度的弹出(pop) 和推入(push)操作。长话短说吧,这个内存数据库的想法的确奏效了,于是我用C语言重写了最初的数据库原型,并给它加上了基于子进程实现的持久化特性,Redis 就这样诞生了。”

在 Redis 诞生六周年之际, Antirez 撰写了一篇博文分享他对于个人副业项目和主页项目的看法。他觉得他的副业项目都有一个共同目标,能够使他感到愉悦快乐,这让他在主页项目上连续不断的工作,导致的身心疲惫甚至厌烦的心情得以缓解和调整。包括 Redis 起初也是一个叫做 LLOOGG 的副业项目一部分。

而在2020年6月,Antirez 发布了他的退役声明。他始终认为写代码是一种更好的自我表达以及这是一种艺术创作。而现在因为 redis 这个项目越来越重要,他感觉他在 redis 的工作越来越拘束,他逐渐不能随意表达自己去大刀阔斧修改代码,只能在现有代码基础上进行维护。所以他决定退修。希望,Antirez 在结束 Redis 的冒险之旅后,能够拥有另一场属于自己的、更惬意的表达艺术的冒险。

(以上内容基于【精选】再见了,Redis之父!_技术领导力的博客-CSDN博客Redis之父Antirez谈副业与主业-腾讯云开发者社区-腾讯云 (tencent.com)两篇文章整理。)

———————————————————————————————————————————

②Redis 另一名主要代码贡献者 Pieter Noordhuis 所能查阅到的资料甚少,在豆瓣 Redis 这一书目中(封面为红白上有一只鸟)介绍到:

Pieter Noordhuis

Pieter Noordhuis is pursuing a Master’s degree at the University of Gronigen, Netherlands. He got involved with low-level programming as a teenager and started contributing to Redis in early 2010. His contributions to Redis are sponsored by VMware.

翻译即为:Pieter Noordhuis 正在荷兰格罗尼根大学攻读硕士学位。他在十几岁时就参与了低级编程,并于2010年初开始为 Redis 做贡献。他对 Redis 的贡献由 VMware 赞助。

因此书出版年为2011-6-15,仅能推测 Pieter Noordhuis 现以完成学业,更多的资料会在后续更多的查询中进行补充。

———————————————————————————————————————————

以上 Salvatore Sanfilippo 和 Pieter Noordhuis 的故事主要想表明,兴趣可以为我们的提供源源不断的创造力并且让我们在自己喜欢的专业上越走越远。希望各位正在撰写代码的朋友,能够从自己的专业学习或工作中找到对写代码的乐趣,同样的,也开启属于自己的一场冒险。


问2:为什么采用编译的方式安装 Redis 而不是解压的方式?(P217)

答:书中下载的是源码包。源码包格式一般是一个版本号的 tar 包:*.tar.gz、*.tgz、*.bz2,例如书中 redis-5.0.7.tar.gz(P214)。源码包一般的安装过程是:解压→ ./config → make →  make install →……与书中对应。

经查询资料,安装软件的方式有:①编译安装;②YUM 安装;③RPM 包安装;④二进制安装。其中二进制安装是已经编译好的程序,只需要下载解包(即安装)后就可以马上使用,安装过程简单迅速,但有无法查看源代码、选择功能不灵活、有依赖性等缺点。源码安装的优点是自主性强版本新,如果有足够的能力,可以自行修改源代码,并且在安装的时候可以自由选择要安装的所需功能( ./configure 中的各种参数)及路径等。而其他两种安装方式可以自行搜索拓展。


问3:为什么“7.4.1操作键”部分与 “7.4.2操作字符串”部分重复介绍SET等个别操作,名字不是相同吗?(P221、P226)

答:此书是按照类型进行分类,7.4.1是操作键、7.4.2是操作字符串、7.4.3是操作列表······不同表中可能会存在名字相同的操作。但参考其他介绍 Redis 的书之后,有一些是以键的操作来进行教学,再结合介绍各种类型与其键的操作深入学习。因此未像此书有重复介绍的 SET、GET 等指令。加之此书关于 Redis 的操作介绍较为简单,若要深入学习 Redis,可以选择其他更适合自己的入门资料。

(P221) 7.4.1操作键  表 7-2 常用的 Redis 键操作命令及相关说明

(P226) 7.4.2操作字符串  表 7-3 Redis 常用的 String 字符串操作命令及相关说明

【注意】:第一张图(P221  7.4.1操作键  表 7-2 常用的 Redis 键操作命令及相关说明)中 RENAME 键的相关说明错误,应为后文介绍(P224)的修改指定键的名称。


问4:可以用什么方式去练习Redis里的操作呢?(P224)

答:①可以下载解析安装 Redis 进行练习(P210  7.3 Redis 部署)。②使用云服务器练习。③ Redis 官网提供一个 try 网站可以线上练习简单的操作(Try Redis),以下为网页页面截图。


问5:操作中TTL命令只能返回25吗?(P225)

答:并不是。TTL 命令可以查看指定键的剩余过期时间:当键还有剩余过期时间,则返回剩余过期时间“(integer)25 ”(此时剩余过期时间为 25,还剩多少过期时间返回多少过期时间);当键不存在或已过期则返回“(integer)-2 ”;当键被设置为永远不会过期,则返回“(integer)-1 ”,因为 -1 的补码是 1 即为存在。

【补充】:字符串位置、索引位置都是从0开始计,例如:“ www.create.com ”中 c 字母是第 5 个字母,但是处于计算机中 4 位置。“ . ”也要算一个位置。


问6:Hash散列操作也是存储键值对,和集合、有序集合有什么不同?(P237)

答:Set(集合)由不重复无序字符串元素组成;Hash(散列)是无序的可以存储多个键值对之间的映射,键为字符串,只要保证唯一可以是字符串也可以是数字、汉字;Sorted Sets(有序集合)是有序按照值进行自动排序,保证唯一,值可重复。Hash 通过键来查找值,Sorted Sets 可以直接对值进行操作(P208、209)。此外,Set 键就是集合名称,里面有一个或多个元素,Hash 一个散列里面有多个键值对,Sorted Sets 一个有序集合里有多个键值对。


问7:7.5使用 Java 操作 Redis 中主要讲了什么?(P244)

答:主要讲了使用 Java 操作 Redis 的环境搭建以及各类的简单操作实例。这需要基础的 Java 语言基础。


7.7课后习题答案(标注页数为书中对应答案出处)

一、填空题

1.键值对数据库(P205) 2.ANSIC(P205) 3.Set   Sorted sets(P207) 4.String(P207) 5.Set(P208)

二、判断题

1.×(P205) 2.√(P205) 3.×(P208) 4.×(P209) 5.√(P209)

三、选择题

1.A(P213) 2.ABD(P206) 3.D(P205)


以上为《NoSQL》数据库技术与应用(版次:2020年10月第1版,印次:2023年8月第8次印刷) 第七章键值对存储数据库Redis 相关衍生问题与回答。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐