You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,19 +17,19 @@
17
17
18
18
## What is Gopherdis?
19
19
20
-
Gopherdis is an in-memory key-value store written in pure Go that speaks the exact same wire protocol as Redis (RESP2 and RESP3). Any existing Redis client, driver, or tool — including the official `redis-cli` — works against Gopherdis without modification.
20
+
Gopherdis is an in-memory key-value store written in pure Go that speaks the exact same wire protocol as Redis (RESP2 and RESP3). Any existing Redis client, driver, or tool, including the official `redis-cli`, works against Gopherdis without modification.
21
21
22
22
It is designed for deployments where Redis-compatible semantics are required but a single-threaded event loop wastes the multi-core CPUs that modern servers provide.
23
23
24
24
## Why does it exist?
25
25
26
26
Official C Redis executes all commands on one thread, so throughput is capped by single-core performance regardless of how many cores the machine has. Gopherdis removes that ceiling while keeping full protocol compatibility and strict concurrency safety:
27
27
28
-
-**64-shard architecture with transaction isolation** — the keyspace is partitioned across 64 independent database shards, allowing concurrent execution across CPU cores while preserving ACID-like transaction guarantees (`MULTI`/`EXEC`) and atomic script isolation.
29
-
-**Zero-allocation stream engine** — Streams use 8KB fixed chunk slabs from an unmanaged memory arena (`beaver/pure.Pool`), so `XADD`/`XRANGE` bypass Go heap allocations and avoid GC scan pauses that destabilize tail latency.
30
-
-**Thread-safe native data structures** — optimized Swiss-table maps, contiguous cache-friendly Hash `Dict`, concurrent `Set`, and hardware-accelerated Bitmaps.
31
-
-**Bytecode-cached Lua engine** — scripts are compiled into bytecode prototypes (`*lua.FunctionProto`) and executed concurrently on an elastic pool of isolated Lua VMs with transaction-safe state isolation.
32
-
-**Predictive clustering** — standard 16,384 CRC16 hash slots with `-MOVED` redirection, plus a topology graph, an EWMA anomaly predictor that detects node exhaustion before failure, and shadow-master pre-provisioning for zero-downtime handover with epoch fencing tokens.
28
+
-**64-shard architecture with transaction isolation**: The keyspace is partitioned across 64 independent database shards, allowing concurrent execution across CPU cores while preserving ACID-like transaction guarantees (`MULTI`/`EXEC`) and atomic script isolation.
29
+
-**Zero-allocation stream engine**: Streams use 8KB fixed chunk slabs from an unmanaged memory arena (`beaver/pure.Pool`), so `XADD`/`XRANGE` bypass Go heap allocations and avoid GC scan pauses that destabilize tail latency.
30
+
-**Thread-safe native data structures**: Optimized Swiss-table maps, contiguous cache-friendly Hash `Dict`, concurrent `Set`, and hardware-accelerated Bitmaps.
31
+
-**Bytecode-cached Lua engine**: Scripts are compiled into bytecode prototypes (`*lua.FunctionProto`) and executed concurrently on an elastic pool of isolated Lua VMs with transaction-safe state isolation.
32
+
-**Predictive clustering**: Standard 16,384 CRC16 hash slots with `-MOVED` redirection, plus a topology graph, an EWMA anomaly predictor that detects node exhaustion before failure, and shadow-master pre-provisioning for zero-downtime handover with epoch fencing tokens.
33
33
34
34
## How fast is it?
35
35
@@ -55,7 +55,7 @@ Tail-latency percentages are versus the C Redis row of the same workload; negati
0 commit comments