Skip to content

Commit 3244d8b

Browse files
author
Steven Penny
committed
Format to fit 80 columns
This makes it readable on GitHub and editors without auto wrapping.
1 parent 76a5b21 commit 3244d8b

File tree

1 file changed

+55
-8
lines changed

1 file changed

+55
-8
lines changed

MANIFESTO

+55-8
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,64 @@
44
Redis Manifesto
55
===============
66

7-
1 - A DSL for Abstract Data Types. Redis is a DSL (Domain Specific Language) that manipulates abstract data types and implemented as a TCP daemon. Commands manipulate a key space where keys are binary-safe strings and values are different kinds of abstract data types. Every data type represents an abstract version of a fundamental data structure. For instance Redis Lists are an abstract representation of linked lists. In Redis, the essence of a data type isn't just the kind of operations that the data types support, but also the space and time complexity of the data type and the operations performed upon it.
7+
1 - A DSL for Abstract Data Types. Redis is a DSL (Domain Specific Language)
8+
that manipulates abstract data types and implemented as a TCP daemon.
9+
Commands manipulate a key space where keys are binary-safe strings and
10+
values are different kinds of abstract data types. Every data type
11+
represents an abstract version of a fundamental data structure. For instance
12+
Redis Lists are an abstract representation of linked lists. In Redis, the
13+
essence of a data type isn't just the kind of operations that the data types
14+
support, but also the space and time complexity of the data type and the
15+
operations performed upon it.
816

9-
2 - Memory storage is #1. The Redis data set, composed of defined key-value pairs, is primarily stored in the computer's memory. The amount of memory in all kinds of computers, including entry-level servers, is increasing significantly each year. Memory is fast, and allows Redis to have very predictable performance. Datasets composed of 10k or 40 millions keys will perform similarly. Complex data types like Redis Sorted Sets are easy to implement and manipulate in memory with good performance, making Redis very simple. Redis will continue to explore alternative options (where data can be optionally stored on disk, say) but the main goal of the project remains the development of an in-memory database.
17+
2 - Memory storage is #1. The Redis data set, composed of defined key-value
18+
pairs, is primarily stored in the computer's memory. The amount of memory in
19+
all kinds of computers, including entry-level servers, is increasing
20+
significantly each year. Memory is fast, and allows Redis to have very
21+
predictable performance. Datasets composed of 10k or 40 millions keys will
22+
perform similarly. Complex data types like Redis Sorted Sets are easy to
23+
implement and manipulate in memory with good performance, making Redis very
24+
simple. Redis will continue to explore alternative options (where data can
25+
be optionally stored on disk, say) but the main goal of the project remains
26+
the development of an in-memory database.
1027

11-
3 - Fundamental data structures for a fundamental API. The Redis API is a direct consequence of fundamental data structures. APIs can often be arbitrary but not an API that resembles the nature of fundamental data structures. If we ever meet intelligent life forms from another part of the universe, they'll likely know, understand and recognize the same basic data structures we have in our computer science books. Redis will avoid intermediate layers in API, so that the complexity is obvious and more complex operations can be performed as the sum of the basic operations.
28+
3 - Fundamental data structures for a fundamental API. The Redis API is a direct
29+
consequence of fundamental data structures. APIs can often be arbitrary but
30+
not an API that resembles the nature of fundamental data structures. If we
31+
ever meet intelligent life forms from another part of the universe, they'll
32+
likely know, understand and recognize the same basic data structures we have
33+
in our computer science books. Redis will avoid intermediate layers in API,
34+
so that the complexity is obvious and more complex operations can be
35+
performed as the sum of the basic operations.
1236

13-
4 - Code is like a poem; it's not just something we write to reach some practical result. Sometimes people that are far from the Redis philosophy suggest using other code written by other authors (frequently in other languages) in order to implement something Redis currently lacks. But to us this is like if Shakespeare decided to end Enrico IV using the Paradiso from the Divina Commedia. Is using any external code a bad idea? Not at all. Like in "One Thousand and One Nights" smaller self contained stories are embedded in a bigger story, we'll be happy to use beautiful self contained libraries when needed. At the same time, when writing the Redis story we're trying to write smaller stories that will fit in to other code.
37+
4 - Code is like a poem; it's not just something we write to reach some
38+
practical result. Sometimes people that are far from the Redis philosophy
39+
suggest using other code written by other authors (frequently in other
40+
languages) in order to implement something Redis currently lacks. But to us
41+
this is like if Shakespeare decided to end Enrico IV using the Paradiso from
42+
the Divina Commedia. Is using any external code a bad idea? Not at all. Like
43+
in "One Thousand and One Nights" smaller self contained stories are embedded
44+
in a bigger story, we'll be happy to use beautiful self contained libraries
45+
when needed. At the same time, when writing the Redis story we're trying to
46+
write smaller stories that will fit in to other code.
1447

15-
5 - We're against complexity. We believe designing systems is a fight against complexity. We'll accept to fight the complexity when it's worthwhile but we'll try hard to recognize when a small feature is not worth 1000s of lines of code. Most of the time the best way to fight complexity is by not creating it at all.
48+
5 - We're against complexity. We believe designing systems is a fight against
49+
complexity. We'll accept to fight the complexity when it's worthwhile but
50+
we'll try hard to recognize when a small feature is not worth 1000s of lines
51+
of code. Most of the time the best way to fight complexity is by not
52+
creating it at all.
1653

17-
6 - Two levels of API. The Redis API has two levels: 1) a subset of the API fits naturally into a distributed version of Redis and 2) a more complex API that supports multi-key operations. Both are useful if used judiciously but there's no way to make the more complex multi-keys API distributed in an opaque way without violating our other principles. We don't want to provide the illusion of something that will work magically when actually it can't in all cases. Instead we'll provide commands to quickly migrate keys from one instance to another to perform multi-key operations and expose the tradeoffs to the user.
18-
19-
7 - We optimize for joy. We believe writing code is a lot of hard work, and the only way it can be worth is by enjoying it. When there is no longer joy in writing code, the best thing to do is stop. To prevent this, we'll avoid taking paths that will make Redis less of a joy to develop.
54+
6 - Two levels of API. The Redis API has two levels: 1) a subset of the API fits
55+
naturally into a distributed version of Redis and 2) a more complex API that
56+
supports multi-key operations. Both are useful if used judiciously but
57+
there's no way to make the more complex multi-keys API distributed in an
58+
opaque way without violating our other principles. We don't want to provide
59+
the illusion of something that will work magically when actually it can't in
60+
all cases. Instead we'll provide commands to quickly migrate keys from one
61+
instance to another to perform multi-key operations and expose the tradeoffs
62+
to the user.
2063

64+
7 - We optimize for joy. We believe writing code is a lot of hard work, and the
65+
only way it can be worth is by enjoying it. When there is no longer joy in
66+
writing code, the best thing to do is stop. To prevent this, we'll avoid
67+
taking paths that will make Redis less of a joy to develop.

0 commit comments

Comments
 (0)