# 8DB and Redis: CYC31 public measurement extract

Prepared 2026-09-13 from the September 8 internal report and original raw log. No benchmark was rerun for this publication. This is an internally measured result with reviewed source and logs, not an independent benchmark certification.

## Result

Read-only GET throughput, three interleaved rounds. M means million operations per second.

| Arm | Round 1 | Round 2 | Round 3 | Median |
|---|---:|---:|---:|---:|
| 8DB TCP, batch 128, 8 connections | 2.786M | 2.802M | 3.024M | 2.802M |
| Redis TCP, pipeline 128, 8 connections | 2.198M | 2.241M | 2.131M | 2.198M |
| 8DB UDS, batch 128, 8 connections | 3.210M | 3.324M | 2.883M | 3.210M |
| Redis UDS, pipeline 128, 8 connections | 1.981M | 2.031M | 2.008M | 2.008M |

The reported median ratios are approximately 1.27× for TCP and 1.60× for UDS. Rounded table values come from the source report; [the original metric log](kv-cyc31-raw.log) retains the more precise Redis CSV rows and all latency, load and verification entries. Do not compare the amortized 8DB per-operation latency with Redis batch round-trip latency as though they measure the same quantity.

## Method and limits

- Measured 2026-09-08, report window 09:17–09:23 local. The enclosed batch-sweep timestamps run 09:19:17–09:19:42; these are not UTC timestamps.
- MacBook Pro M1, 4 performance and 4 efficiency cores, 16 GB RAM. Client and server share the machine. Machine context is corroborated by the same-day CYC33 method report identified in the manifest.
- 8DB binary commit `2b107249`; full MVCC Bε-tree engine, versioned reads and snapshot processing. Redis `8.10.1`.
- 8-byte keys, 100-byte values, 1 million-key address space, 5 million operations per measured arm, 8 connections, 128-deep aggregation. Four arms interleaved across three rounds.
- Both sides are in memory: 8DB uses SimulatedIo; Redis has AOF and RDB persistence disabled. This is not durable storage throughput.
- Redis was randomly preloaded with approximately 632,000 populated keys in the 1 million-key address space. 8DB returns full values. Hit/miss populations therefore differ. The result is not a perfectly identical population comparison.
- 8DB batch frames share one read snapshot over 128 operations; Redis pipelines individual commands. Both do server-side reads, but their batching semantics differ.
- The 8DB client verifies every response against its deterministic value generator; every enclosed oracle reports `bad=0`. The Redis benchmark client does not perform that value oracle. Its server identity was checked before the sweep.
- Load averages were around 7.2–7.7 on the shared 8-core machine. Results do not establish isolated-client, larger-machine or production performance.
- This record does not establish that every encryption, governance, mesh or post-quantum option was enabled during timing.

## Recorded invocation shape

The source records a tree-engine server, a one-million-record wire preload, then a binary read phase with `--records=1000000 --ops=5000000 --conns=8 --batch=128 --workloads=c`. The Redis phase uses `redis-benchmark -t get -n 5000000 -r 1000000 -d 100 -c 8 -P 128 -q --csv` after preload. TCP and UDS are separate arms. This attachment does not include the private engine implementation or a complete executable reproduction environment.

## Provenance and publication treatment

Original report: `M1-CYC31-ENGINE-BEATS-REDIS.md`.
Original report SHA-256, exact Git blob bytes: `bc79135692f1f4766e181395d234d98b4ad21620e8462664398dd85316ac93fb`.
Original log: `8db-uds-sweep-batch.log`.
Original log SHA-256, exact Git blob bytes: `88257f2e1d37adcf9d138d9252ac25016aa63cca1493cf7cdb88e0b5751c40d8`.

The raw log is byte-for-byte unchanged. Manual review found no credentials, personal paths or private user information in it. Its Redis `run_id` is a transient server identity used for the measurement, not an authentication token. No metric, failed check or measured arm was removed. The report above is an editorial extract, not an unchanged reproduction of the original report: internal Airtable identifiers, private workflow references and unmeasured extrapolations are omitted. Method differences remain explicit. See [manifest.json](manifest.json) for hashes and representation details.
