Skip to content

Commit 4e9bfcf

Browse files
benschermelJohnSully
authored andcommitted
update readme (Snapchat#71)
* update readme * KeyDB must acknowledge its Redis origin and that while we have different opinions we are greatful to Antirez and Redis for the work they've done in this space. * Update README.md
1 parent 75c6b4c commit 4e9bfcf

File tree

1 file changed

+42
-32
lines changed

1 file changed

+42
-32
lines changed

README.md

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,47 @@
22
[![Build Status](https://travis-ci.org/JohnSully/KeyDB.svg?branch=unstable)](https://travis-ci.org/JohnSully/KeyDB) [![Join the chat at https://gitter.im/KeyDB/community](https://badges.gitter.im/KeyDB/community.svg)](https://gitter.im/KeyDB/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
33
[![StackShare](http://img.shields.io/badge/tech-stack-0690fa.svg?style=flat)](https://stackshare.io/eq-alpha-technology-inc/eq-alpha-technology-inc)
44

5+
##### Need Help? Check out our extensive [documentation](https://docs.keydb.dev).
6+
57
What is KeyDB?
68
--------------
79

8-
KeyDB is a high performance fork of Redis focusing on multithreading, memory efficiency, and high throughput. In addition to multithreading KeyDB also has features only available in Redis Enterprise such as [Active Replication](https://github.com/JohnSully/KeyDB/wiki/Active-Replication), [FLASH storage](https://github.com/JohnSully/KeyDB/wiki/FLASH-Storage) support, and some not available at all such as direct backup to AWS S3.
10+
KeyDB is a high performance fork of Redis with a focus on multithreading, memory efficiency, and high throughput. In addition to multithreading, KeyDB also has features only available in Redis Enterprise such as [Active Replication](https://github.com/JohnSully/KeyDB/wiki/Active-Replication), [FLASH storage](https://github.com/JohnSully/KeyDB/wiki/FLASH-Storage) support, and some not available at all such as direct backup to AWS S3.
11+
12+
KeyDB maintains full compatibility with the Redis protocol, modules, and scripts. This includes the atomicity gurantees for scripts and transactions. Because KeyDB keeps in sync with Redis development KeyDB is a superset of Redis functionality, making KeyDB a drop in replacement for existing Redis deployments.
13+
14+
On the same hardware KeyDB can perform twice as many queries per second as Redis, with 60% lower latency. Active-Replication simplifies hot-spare failover allowing you to easily distribute writes over replicas and use simple TCP based load balancing/failover. KeyDB's higher performance allows you to do more on less hardware which reduces operation costs and complexity.
15+
16+
<img src=https://cdn-images-1.medium.com/max/1400/1*s7mTb7Qb0kxc951mz8bdgA.png width=420 height=300/><img src=https://cdn-images-1.medium.com/max/1400/1*R00A5U4AFGohGOYHMfT6fA.png height=300/>
17+
18+
Why fork Redis?
19+
---------------
20+
21+
KeyDB has a different philosophy on how the codebase should evolve. We feel that ease of use, high performance, and a "batteries included" approach is the best way to create a good user experience. While we have great respect for the Redis maintainers it is our opinion that the Redis approach focusses too much on simplicity of the code base at the expense of complexity for the user. This results in the need for external components and workarounds to solve common problems - resulting in more complexity overall.
922

10-
On the same hardware KeyDB can perform twice as many queries per second as Redis, with 60% lower latency.
23+
Because of this difference of opinion features which are right for KeyDB may not be appropriate for Redis. A fork allows us to explore this new development path and implement features which may never be a part of Redis. KeyDB keeps in sync with upstream Redis changes, and where applicable we upstream bug fixes and changes. It is our hope that the two projects can continue to grow and learn from each other.
1124

12-
KeyDB has full compatibility with the Redis protocol, modules, and scripts. This includes full support for transactions, and atomic execution of scripts. For more information see our architecture section below.
25+
Additional Resources
26+
--------------------
1327

1428
Try our docker container: https://hub.docker.com/r/eqalpha/keydb
1529

1630
Talk on Gitter: https://gitter.im/KeyDB
1731

18-
[Subscribe to the KeyDB mailing list](https://eqalpha.us20.list-manage.com/subscribe/post?u=978f486c2f95589b24591a9cc&id=4ab9220500)
19-
20-
Management GUI: We recommend [FastoNoSQL](https://fastonosql.com/) which has official KeyDB support.
32+
Visit our Website: https://keydb.dev
2133

22-
New: Active Replica Support
23-
---------------------------
34+
See options for channel partners and support contracts: https://keydb.dev/support.html
2435

25-
New! KeyDB now has support for Active Replicas. This feature greatly simplifies hot-spare failover and allows you to distribute writes over replicas instead of just a single master. For more information [see the wiki page](https://github.com/JohnSully/KeyDB/wiki/Active-Replication).
36+
Learn with KeyDB’s official documentation site: https://docs.keydb.dev
2637

27-
Why fork Redis?
28-
---------------
38+
[Subscribe to the KeyDB mailing list](https://eqalpha.us20.list-manage.com/subscribe/post?u=978f486c2f95589b24591a9cc&id=4ab9220500)
2939

30-
The Redis maintainers have continually reiterated that they do not plan to support multithreading. While we have great respect for the redis team, we feel the analysis justifying this decision is incorrect. In addition we wanted open source implementations of features currently only available in proprietary modules. We feel a fork is the best way to accelerate development in the areas of most interest to us.
40+
Management GUI: We recommend [FastoNoSQL](https://fastonosql.com/) which has official KeyDB support.
3141

32-
We plan to track the Redis repo closely and hope our projects can learn from each other.
3342

3443
Benchmarking KeyDB
3544
------------------
3645

37-
<img src=https://cdn-images-1.medium.com/max/1400/1*s7mTb7Qb0kxc951mz8bdgA.png width=420 height=300/><img src=https://cdn-images-1.medium.com/max/1400/1*R00A5U4AFGohGOYHMfT6fA.png height=300/>
38-
3946
Please note keydb-benchmark and redis-benchmark are currently single threaded and too slow to properly benchmark KeyDB. We recommend using a redis cluster benchmark tool such as [memtier](https://github.com/RedisLabs/memtier_benchmark). Please ensure your machine has enough cores for both KeyDB and memteir if testing locally. KeyDB expects exclusive use of any cores assigned to it.
4047

4148
For more details on how we benchmarked KeyDB along with performance numbers check out our blog post: [Redis Should Be Multithreaded](https://medium.com/@john_63123/redis-should-be-multi-threaded-e28319cab744?source=friends_link&sk=7ce8e9fe3ec8224a4d27ef075d085457)
@@ -58,6 +65,10 @@ If you would like to use the [FLASH backed](https://github.com/JohnSully/KeyDB/w
5865

5966
If you would like KeyDB to dump and load directly to AWS S3 this option specifies the bucket. Using this option with the traditional RDB options will result in KeyDB backing up twice to both locations. If both are specified KeyDB will first attempt to load from the local dump file and if that fails load from S3. This requires the AWS CLI tools to be installed and configured which are used under the hood to transfer the data.
6067

68+
active-replica yes
69+
70+
If you are using active-active replication set `active-replica` option to “yes”. This will enable both instances to accept reads and writes while remaining synced. [Click here](https://docs.keydb.dev/docs/active-rep/) to see more on active-rep in our docs section. There are also [docker examples]( https://docs.keydb.dev/docs/docker-active-rep/) on docs.
71+
6172
All other configuration options behave as you'd expect. Your existing configuration files should continue to work unchanged.
6273

6374
Building KeyDB
@@ -67,16 +78,19 @@ KeyDB can be compiled and is tested for use on Linux. KeyDB currently relies on
6778

6879
Install dependencies:
6980

70-
% sudo apt install build-essential nasm autotools-dev autoconf libjemalloc-dev tcl tcl-dev uuid-dev
81+
% sudo apt install build-essential nasm autotools-dev autoconf libjemalloc-dev tcl tcl-dev uuid-dev libcurl4-openssl-dev
7182

7283
Compiling is as simple as:
7384

7485
% make
7586

76-
You can enable flash support with (Note: autoconf and autotools must be installed):
87+
You can enable flash support with:
7788

7889
% make MALLOC=memkind
7990

91+
***Note that the following dependencies may be needed:
92+
% sudo apt-get install autoconf autotools-dev libnuma-dev libtool
93+
8094
Fixing build problems with dependencies or cached build options
8195
---------
8296

@@ -179,7 +193,7 @@ then in another terminal try the following:
179193
(integer) 2
180194
keydb>
181195

182-
You can find the list of all the available commands at http://redis.io/commands.
196+
You can find the list of all the available commands at https://docs.keydb.dev/docs/commands/
183197

184198
Installing KeyDB
185199
-----------------
@@ -222,23 +236,18 @@ Future work:
222236

223237
Docker Build
224238
------------
225-
226-
Run the following commands for a full source download and build:
227-
239+
Build the latest binaries from the github unstable branch within a docker container. Note this is built for Ubuntu 18.04.
240+
Simply make a directory you would like to have the latest binaries dumped in, then run the following commmand with your updated path:
228241
```
229-
git clone [email protected]:JohnSully/KeyDB.git
230-
docker run -it --rm -v `pwd`/KeyDB:/build -w /build devopsdood/keydb-builder make
242+
$ docker run -it --rm -v /path-to-dump-binaries:/keydb_bin eqalpha/keydb-build-bin
231243
```
244+
You should receive the following files: keydb-benchmark, keydb-check-aof, keydb-check-rdb, keydb-cli, keydb-sentinel, keydb-server
232245

233-
Then you have fresh binaries built, you can also pass any other options to the make command above after the word make. E.g.
234-
235-
```docker run -it --rm -v `pwd`/KeyDB:/build -w /build devopsdood/keydb-builder make MAllOC=memkind```
236-
237-
The above commands will build you binaries in the src directory. Standard `make install` without Docker command will work after if you wish to install
238-
239-
If you'd prefer you can build the Dockerfile in the repo instead of pulling the above container for use:
240-
241-
`docker build -t KeyDB .`
246+
If you are looking to enable flash support with the build (make MALLOC=memkind) then use the following command:
247+
```
248+
$ docker run -it --rm -v /path-to-dump-binaries:/keydb_bin eqalpha/keydb-build-bin:flash
249+
```
250+
Please note that you will need libcurl4-openssl-dev in order to run keydb. With flash version you may need libnuma-dev and libtool installed in order to run the binaries. Keep this in mind especially when running in a container. For a copy of all our Dockerfiles, please see them on [docs]( https://docs.keydb.dev/docs/dockerfiles/).
242251

243252
Code contributions
244253
-----------------
@@ -252,3 +261,4 @@ source distribution.
252261
Please see the CONTRIBUTING file in this source distribution for more
253262
information.
254263

264+

0 commit comments

Comments
 (0)