Redis Manifesto(2011)

2021-04-05 05:14:30

很多次我不知道如何回复特征请求,或关于Redis中的为什么以特定方式完成的问题。大多数问题都有很大的意义,不仅有一种方法可以在编程中制造,很多关于你的口味,感觉以及关于如何写软件的想法。所以我试图在这种短暂的清单中缩小我对Redis和软件开发的感受,即i' ll包括在Redis分发中。有一种无限数量的做事方式,这只是一个我和redis社区的好处。 1 - 用于抽象数据类型的DSL。 Redis是一种用于操纵抽象数据类型并实现为TCP守护程序的DSL(域特定语言)。命令操纵键是二进制安全字符串的关键空间,并且值是不同类型的抽象数据类型。每个数据类型都代表了基本数据结构的抽象版本。例如,Redis列表是链接列表的抽象表示。在REDIS中,数据类型的本质是' t只是数据类型支持的操作,也是数据类型的空间和时间复杂度以及对其执行的操作。

2 - 内存存储是#1。由定义的键值对组成的Redis数据集主要存储在计算机中。各种计算机中的内存量,包括入门级服务器,每年都在显着增加。内存快速,允许REDIS具有非常可预测的性能。由10K或40百万键组成的数据集将类似地执行。复杂的数据类型如redis排序集很容易实现和操作在内存中,性能良好,使REDIS非常简单。 Redis将继续探索替代选项(如果数据可以选择存储在磁盘上),但该项目的主要目标仍然是内存内存数据库的开发。

3 - 基本API的基本数据结构。 Redis API是基本数据结构的直接后果。 API通常可以是任意的,但不是类似于基本数据结构的性质的API。如果我们从宇宙的另一个部分达到智能生活,他们可能会知道,理解并识别我们在计算机科学书籍中的相同基本数据结构。 Redis将避免API中的中间层,因此复杂性是显而易见的,并且可以作为基本操作的总和执行更复杂的操作。

4 - 代码就像一首诗;它不仅仅是我们写的东西达到了一些实际结果。有时,远非Redis哲学的人建议使用其他作者(通常用其他语言)编写的其他代码,以实现Redis目前缺乏的东西。但对于我们来说,这就像莎士比亚决定使用来自Divina Commedia的Paradiso结束Enrico IV。正在使用任何外部代码坏主意吗?一点也不。喜欢在"一千和一晚"较小的自给式故事嵌入更大的故事中,我们很乐意在需要时使用美丽的自给式图书馆。与此同时,在编写Redis故事时我们'重新编写符合其他代码的较小的故事。

5 - 我们'反对复杂性。我们认为设计系统是反对复杂性的斗争。我们' LL接受它在它'值得的复杂性,但是我们'如果一个小功能不值1000行代码,请努力识别。大部分时间都是战斗复杂性的最佳方式是根本没有创造它。

6 - 两级API。 Redis API具有两个级别:1)API的子集自然地适合于redis的分布式版本,2)一个支持多关键操作的更复杂的API。如果明智地使用但是没有办法在不违反我们的其他原则的情况下以不透明的方式分发更复杂的多键API,这两者都很有用。我们不想在实际上它可以在所有情况下且在所有情况下都能提供幻觉。相反,我们' ll提供从一个实例快速迁移键的命令,以执行多关键操作并将权衡暴露给用户。

7 - 我们优化快乐。我们相信写作代码是很多艰苦的工作,唯一可以享受它的方式。当写代码不再有快乐时,最好的事情就是停止。为了防止这一点,我们' ll避免采取将使Redis更加快乐的道路。

感谢Peter Cooper阅读草案并帮助使其更好。