From c017b8370d58d2606e629e0ed11de35a0b6e50de Mon Sep 17 00:00:00 2001 From: JohnSully Date: Tue, 12 Mar 2019 00:55:03 -0400 Subject: [PATCH 1/4] Add charts to readme Hotlink from medium, hope they don't mind. Former-commit-id: 0b98280a1f6a727c5566120b486a9e16aa7dbcc9 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 482ba98e3..83ba82d7b 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ We plan to track the Redis repo closely and hope our projects can learn from eac Benchmarking KeyDB ------------------ + 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. 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) From ec2d1ce82224a72afbfab5286c07ca93af368a48 Mon Sep 17 00:00:00 2001 From: JohnSully Date: Tue, 12 Mar 2019 00:59:28 -0400 Subject: [PATCH 2/4] formatting fixes Former-commit-id: 703e4ad2fe8bdd05b0655c25a3444f31a4c0d3b6 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 83ba82d7b..d3963dc85 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ Benchmarking KeyDB ------------------ + 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. 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) From 3ea54b608a9b363a598753f23c191ac576766d69 Mon Sep 17 00:00:00 2001 From: JohnSully Date: Tue, 12 Mar 2019 14:38:03 -0400 Subject: [PATCH 3/4] Update README.md Former-commit-id: 7546c7d8b41358e4d2a0b71f41ca08b82fa3f8b8 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d3963dc85..49c6373d7 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ On the same hardware KeyDB can perform twice as many queries per second as Redis 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. +Try our docker container: https://hub.docker.com/r/eqalpha/keydb + Why fork Redis? --------------- From f368a228d8decd6b5052a770fd071709d1f5e6ec Mon Sep 17 00:00:00 2001 From: 0xflotus <0xflotus@gmail.com> Date: Wed, 13 Mar 2019 15:14:34 +0100 Subject: [PATCH 4/4] fixed guarantees Former-commit-id: 66f203270862a53b27b18cea8a03999be2262492 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 49c6373d7..9d89eaa5b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ What is KeyDB? -------------- -KeyDB is a high performance fork of Redis focussing on multithreading, memory efficiency, and high throughput. In addition to multithreading KeyDB also has features only available in Redis Enterprise such as FLASH storage support, and some not available at all such as direct backup to AWS S3. +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 FLASH storage support, and some not available at all such as direct backup to AWS S3. On the same hardware KeyDB can perform twice as many queries per second as Redis, with 60% lower latency. @@ -191,7 +191,7 @@ You'll be able to stop and start KeyDB using the script named Multithreading Architecture --------------------------- -KeyDB works by running the normal Redis event loop on multiple threads. Network IO, and query parsing are done concurrently. Each connection is assigned a thread on accept(). Access to the core hash table is guarded by spinlock. Because the hashtable access is extremely fast this lock has low contention. Transactions hold the lock for the duration of the EXEC command. Modules work in concert with the GIL which is only acquired when all server threads are paused. This maintains the atomicity gurantees modules expect. +KeyDB works by running the normal Redis event loop on multiple threads. Network IO, and query parsing are done concurrently. Each connection is assigned a thread on accept(). Access to the core hash table is guarded by spinlock. Because the hashtable access is extremely fast this lock has low contention. Transactions hold the lock for the duration of the EXEC command. Modules work in concert with the GIL which is only acquired when all server threads are paused. This maintains the atomicity guarantees modules expect. Unlike most databases the core data structure is the fastest part of the system. Most of the query time comes from parsing the REPL protocol and copying data to/from the network.