Skip to content

Commit 788e623

Browse files
committed
docs: remove em dashes from README
1 parent 223a7ba commit 788e623

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,19 @@
1717

1818
## What is Gopherdis?
1919

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 toolincluding 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.
2121

2222
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.
2323

2424
## Why does it exist?
2525

2626
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:
2727

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.
3333

3434
## How fast is it?
3535

@@ -55,7 +55,7 @@ Tail-latency percentages are versus the C Redis row of the same workload; negati
5555

5656
### Memory Characteristics (`used_memory_rss` growth)
5757

58-
At realistic dataset sizes, Gopherdis and C Redis reach memory parity 2M keys × 1KB values (~1.6GB payload):
58+
At realistic dataset sizes, Gopherdis and C Redis reach memory parity (2M keys × 1KB values, ~1.6GB payload):
5959

6060
| Target | Memory Delta | vs C Redis |
6161
|---|:---:|:---:|

0 commit comments

Comments
 (0)