再见了Antirez永远的Redis之神
其实antirez(Redis作者)退出Redis维护一发布我就在很多咨询网站上面看到了,当时也没太多感慨。
今天比较有空想去看看霉霉Twitter的,然后看到了antirez,我就又一次回顾了他的退役声明。
我想这个Redis之父肯定没想到,自己和小伙伴启动的项目,在10年后的今天,会对这个互联网时代产生这么大的影响吧,说Redis加速了互联网公司的发展也不为过。
其实很多开源项目都是作者一个无意间的初衷启动的,然后不经意间做到了各个领域的世界第一,比如Linux,Nginx等等,都是小小的体积蕴含着大大的能量。
我之前所在的团队是做电商活动的,可以说Redis就是我接触最多的中间件,所以我文章最开始也是以Redis作为系列的开篇,对它的感情也可以说比正常程序员都要独特,他的各种使用场景,高级用法我几乎接触了一个遍,在很长一段时间也成为我面试的杀手锏,我研读过Redis很多功能的源码,不得不说这个团队真的把性能的优化做到了极致,用最短的代码,做到了最大的性能优化。
如果不是技术的同学可能不是很明白,这么说吧,大家进任何网页第一眼能看到的东西,大部分都是跟缓存息息相关的,或者也是利用了缓存这样的概念,一旦缓存挂了,那所有的网站可能会天天都会发生微博宕机那样的事故,所有人都无法正常访问网站,大量的流量会瞬间击垮服务器。
在Redis中,数据结构这个词的意义不仅表示在某种数据结构上的操作,更包括了结构本身及这些操作的时间空间复杂度。
Redis 定位是一个内存数据库,正是由于内存的快速访问特性,才使得Redis能够有如此高的性能,才使得Redis能够轻松处理大量复杂的数据结构,Redis会尝试其它的存储方面的选择,但是永远不会改变它是一个内存数据库的角色。
Redis 有着诗一般优美的代码,经常有一些不太了解Redis 原则的人会建议Redis采用一些其它人的代码,以实现一些Redis 未实现的功能,但这对研发团队来说来说就像是非要给《红楼梦》接上后四十回一样。
Redis的深度用户都知道,缓存只是他最简单和基础的功能罢了,哨兵,集群,分布式锁,延时队列,位图,HyperLogLog,布隆过滤器,限流,GeoHash(附近的人)等等,眼花缭乱的类型和使用姿势多得不行。
这里面大部分的东西在antirez维护Redis的早期就诞生了,是不是对他的敬佩又多了一分。
antirez这样的大神能坚持这么多年,我想枯燥是必然的,但是如果你跟我一样关注他的Twitter你会发现,这个人是真的热爱这项事业。
他几乎没有一条生活相关的推特,最多偶尔晒一下论坛和技术大牛的合照,或者偶尔。。。开开车,我发现我们程序员都喜欢开车哈哈哈,不知道为啥敲到这里的时候,我的嘴角微微的上扬了。
你说他枯燥吧他枯燥,不过他也很有趣,我问大家一个问题:大家知道Redis端口为啥是6379么?
Antirez出生在非英语系国家,英语能力长期以来是一个短板,他曾经专门为自己蹩脚的英语能力写过一篇博文《英语伤痛 15 年》,用自己的成长经历来鼓励那些非英语系的技术开发者们努力攻克英语难关。
我们都知道 Redis 的默认端口是 6379,这个端口号也不是随机选的,而是由手机键盘字母「MERZ」的位置决定的。
「MERZ」在 Antirez 的朋友圈语言中是「愚蠢」的代名词,它源于意大利广告女郎「Alessia Merz」在电视节目上说了一堆愚蠢的话。
他的博客地址:http://oldblog.antirez.com/post/redis-as-LRU-cache.html 包括上面的英语伤痛15年也是有的,他是意大利人嘛,所以英文的博客不是那么多,不过他最近更新的大部分都是英文的了。
是不是发现这个人还是有意思,因为不爽一个广告女郎,就把人家做成了端口名。
最后跟随谷歌以及程序羊的翻译跟我再一次回顾,Antirez的退役文吧,这个四十岁的老兵,这么多年孜孜不倦地写代码,为 Redis 的开源事业持续贡献自己的力量:
antirez在退役文中说到:他最激动人心的时刻就是十年前项目刚刚开始的时刻,Redis 的联合创始人和我启动了两个重要的意大利互联网 web 2.0 项目,为了持续扩容服务,我们创造了很多新概念,这些概念其实已经在技术领域流行很多年了,但是在当时我们并不了解也不曾验证过是否可行,不过没关系,我们喜欢解决问题,并从中发现很多乐趣,Redis 刚刚诞生的时候真的是非常有意思的(让人难忘的)。
但是如今 Redis 不一样了,它难以置信的在非常非常多的项目中扮演者至关重要的角色。经过了这么多年的打磨,我的工作性质也发生了变化。我不只是要让它变更加有用(更多新鲜的功能),还要让它尽可能的稳定(少出 bug)。
尤其最近这几年,我的工作内容变化太大了,我主要的精力都花在了 Redis 代码的维护上,主要就是看看其它的开发者告诉我关于 Redis 的代码该如何改进才能让它变的更快更好。其实我根本就不想做一个软件维护者(修 bug、优化代码的工作实在太无聊了)。
我写代码是为了更好的表达自我,这是艺术创作(乐趣),而不单单是为了把事情搞定(挣钱)。
我的目标更多的是为了追求美感,而最终能不能起到作用仅仅是附带的结果而已。我宁可大家认为我是一个糟糕的艺术家,也不希望只被看成一个优秀的程序员。
但是现在我被要求这要求那,就因为这个项目变得如此重要。我不能随意表达自己(艺术创作,大刀阔斧的改代码),而只能在现有的代码基础上维护(小打小闹)。
我并不是说这样不对,这只是现阶段的 Redis 必须要接受的方式。但是我个人有点受不了,最近几年我感到很憋屈(Linus 也会是这种感觉么?)。
所以呢,社区里面的同志们啊,我告诉你们我要退居幕后了。我未来只是作为 Redis 的顾问来给 Redis 实验室提供一些新奇的想法(维护 Redis 代码我就不干了)。如此呢,我就可以把自己释放出来做点其它的事。至于做什么还没有想好,会不会继续写代码也不确定。我比较怀疑自己是否能够完全放弃写代码,只是因为写代码实在是太好玩了(此处有个调皮的表情)。
从今天开始,我要把 Redis 留给了 Redis 社区,让我的老战友 Yossi Gottlieb 和 Oran Agra 来继续维护它。
这两个人在过去这几年对我帮助非常大,在关于 Redis 愿景(未来)的理解上,他们并不会被我个人的主观想法所左右。因为我不太想参与 Redis 开发模型的治理工作(这是 Redis 维护工作中最重要的元工作,而我不是想继续搞维护了),所以后面跟其它 Redis 开发者交流「可持续的开发模型」一事就完全托付给他们两了,你们可以从这边文章 https://redislabs.com/blog/new-governance-for-redis/ 中直接了解这个事。
我相信我不只是把 Redis 留给了社区里的一堆专家级程序员,还应该包括社区中所有对 Redis 精神遗产感兴趣的朋友们。
十一年来,我希望让大家看到开发软件还有这样的一种特别的方式(我的方式),这种方式只有个别人可以理解。我希望在 Redis 未来的变化中,这种方式还是可以继续被适度采用。(是不是 antirez 独裁(不可持续)的方式和 他老战友的「可持续开发模型」冲突了,闹的很不愉快,不是很确定)。
Redis 是我职业生涯中压力最大的项目,可能也是最重要的项目。
最近这些年编程世界的变化我并不是特别喜欢(不知道说的是哪方面的变化),虽然这段旅程非常艰辛,能够有机会和很多特别的人一起工作交流也让我感觉非常知足。
谢谢你们的理解和帮助,这让我成长了很多,我需要特别感谢无私赞助我的公司和个人让我可以持续这么多年持续每天为开源世界共享代码,让我可以自由地做自己认为是正确的事。还有 Redis Labs、VMWare 和 Pivotal,非常感谢你们的帮助和宽容(是不是 antirez 摸鱼了)。
前面说到,除了继续 Redis 的顾问工作之外,我也不知道未来的路该怎么走。也许走一步看一步也挺好,不用干太多事。我还想发展一下个人的一些兴趣爱好,比如写写博客就挺好,以前我一直想写但是一直没有太多时间。
最近我还发了一些意大利语的技术视频,这很好玩,还收到了读者大量的反馈,我未来应该还会发更多的视频。你们大概也知道我的 Twitter 账号 @antirez 一直很活跃 ,如果你们还对我这样一个又老又怪的程序员感兴趣,那就去 Twitter 上围观我吧。
最后用antirez的一句话收尾吧:
我们以优化代码为乐,我们相信编码是一件辛苦的工作,唯一对得起这辛苦的就是去享受它,如果我们在编码中失去了乐趣,那最好的解决办法就是停下来,我们决不会选择让Redis不好玩的开发模式。
respect
絮叨
另外,敖丙把自己的面试文章整理成了一本电子书,共 1630页!目录如下,还有我复习时总结的面试题以及简历模板
现在免费送给大家,在我的公众号三太子敖丙回复 【888】 即可获取。
我是敖丙,你知道的越多,你不知道的越多,我们下期见!
人才们的 【三连】 就是敖丙创作的最大动力,如果本篇博客有任何错误和建议,欢迎人才们留言!
文章持续更新,可以微信搜一搜「 三太子敖丙 」第一时间阅读,回复【资料】有我准备的一线大厂面试资料和简历模板,本文 GitHub https://github.com/JavaFamily 已经收录,有大厂面试完整考点,欢迎Star。
再见了Antirez永远的Redis之神的更多相关文章
- SSRF漏洞利用之Redis大神赐予shell
0x00实验环境 1.centos靶机(IP为:192.168.11.205,桥接模式) 2.kali黑客攻击主机(IP为:192.168.172.129,NAT模式) 0x01实验原理 这段 ...
- 基于Redis的分布式锁和Redlock算法
1 前言 前面写了4篇Redis底层实现和工程架构相关文章,感兴趣的读者可以回顾一下: Redis面试热点之底层实现篇-1 Redis面试热点之底层实现篇-2 Redis面试热点之工程架构篇-1 Re ...
- 关于Redis的常识(推荐)
原文出处: https://github.com/springside/springside4/wiki/redis 版本:V3.0.3 2013-8-1 (@江南白衣版权所有,转载请保留出处) 1. ...
- 关于Redis的知识汇总[转]
1. Overview 1.1 资料 <The Little Redis Book> ,最好的入门小册子,可以先于一切文档之前看,免费. 作者Antirez的博客,Antirez维护的Re ...
- 关于Redis的常识
原文出自:http://blog.jobbole.com/44476/ 版本:V3.0.2 2013-7-13 (江南白衣版权所有,转载请保留出处) 1. Overview 1.1 资料 <Th ...
- 详细介绍Redis的几种数据结构以及使用注意事项(转)
原文:详细介绍Redis的几种数据结构以及使用注意事项 1. Overview 1.1 资料 <The Little Redis Book>,最好的入门小册子,可以先于一切文档之前看,免费 ...
- Redis的常识
https://github.com/springside/springside4/wiki/redis 1. Overview 1.1 资料 <The Little Redis Book> ...
- 洞悉Redis技术内幕:缓存,数据结构,并发,集群与算法
"为什么这个功能用不了?" 程序员:"清一下缓存" 上篇洞悉系列文章给大家详细介绍了MySQL的存储内幕:洞悉MySQL底层架构:游走在缓冲与磁盘之间.既然聊过 ...
- Disque:Redis之父新开源的分布式内存作业队列
Disque是Redis之父Salvatore Sanfilippo新开源的一个分布式内存消息代理.它适应于"Redis作为作业队列"的场景,但采用了一种专用.独立.可扩展且具有容 ...
随机推荐
- CentOS 关闭暂不需要的系统服务
需要保留的服务:crond.iptables.irqbalance.microcode_ctl.network.random.sshd.syslog.local 一 .使用命令:ntsysv 打开选项 ...
- 「HAOI2015树上染色」「树形DP」
其实我还不大会树形DP 此题就当练手叭,缕一下思路就好 题目链接 BZOJ4033 题目大意就是给一棵树,对一部分点染成黑色,剩下的为白色,问所有同色点距离之和....... 简明扼要的题意,然额我不 ...
- Numerical Sequence (Hard vision) 题解
The only difference between the easy and the hard versions is the maximum value of \(k\). You are gi ...
- BZOJ 1131 [POI2008] STA-Station 题解
题目 The first stage of train system reform (that has been described in the problem Railways of the th ...
- 洛谷 P3574 [POI2014]FAR-FarmCraft
题目传送门 题目描述 输入输出格式 输入格式: 输出格式: 一行,包含一个整数,代表题目中所说的最小时间. 输入输出样例 样例输入 样例输出 提示 分析 我们设f[x]为遍历完以x为根的子树且将这棵子 ...
- POJ2362贪心
题意:我们的化学生物学家发明了一种新的叫stripies非常神奇的生命.如果一个质量为m1和m2的stripies相撞,生成的stripies体重是2*sqrt(m1*m2) 现在,科学家们想知道,如 ...
- ASP.NET CORE MVC用时分析工具MiniProfiler
ASP.NET CORE MVC用时分析工具MiniProfiler MiniProfiler(https://miniprofiler.com/)是一个轻量级且简单易用的分析工具库,它可以用来分析A ...
- 数据可视化之PowerQuery篇(十八)Power BI数据分析应用:结构百分比分析法
https://zhuanlan.zhihu.com/p/113113765 本文为星球嘉宾"海艳"的PowerBI数据分析工作实践系列分享之二,她深入浅出的介绍了PowerBI ...
- 数据可视化之PowerQuery篇(十四)产品关联度分析
https://zhuanlan.zhihu.com/p/64510355 逛超市的时候,面对货架上琳琅满目的商品,你会觉得这些商品的摆放,或者不同品类的货架分布是随机排列的吗,当然不是. 应该都听说 ...
- tensorflow实现lstm中遇到的函数记录
函数一:initializer=tf.random_uniform_initializer(-0.1, 0.1, seed=123) tf.random_uniform_initializer 参数: ...