31ns vs 16ms. Your Redis cache adds 16 milliseconds per read. Cachee serves the same data in 16 microseconds. Same key. Same value. Same query. One thousand times faster. This is not an incremental optimization. This is a category change.
The Number Everyone Knows
Open your Datadog. Your Grafana. Your CloudWatch. Look at your Redis P50 latency. It's somewhere between 5ms and 30ms. Most of you are seeing 10-20ms. Call it 16ms — the median we see across hundreds of production deployments.
That 16ms is not Redis being slow. Redis is doing its job. That 16ms is physics. Your application opens a TCP connection, sends a command over the network, Redis processes it in microseconds, and the response travels back. The round-trip dominates. Same AZ: 339µs. Cross-AZ: 1-3ms. Cross-region: 30-80ms. Add TLS negotiation, connection pool checkout, serialization overhead, and you're at 16ms before Redis even touches your data.
What 31ns Looks Like
Cachee is an in-process L1 cache. The data lives in your application's memory. A DashMap with ahash — the same lock-free concurrent hashmap used in Rust's highest-performance systems. No network hop. No TCP. No serialization. A pointer lookup.
That's not a benchmark artifact. That's not a synthetic test. That's 31ns on every L1 cache hit, measured across 6.28 million requests on production infrastructure on a c7i.metal-48xl. 99%+ hit rate on hot data. Every time.
The Math That Matters
| Metric | Redis / ElastiCache | Cachee L1 | Difference |
|---|---|---|---|
| Latency per read | 16 ms | 31 ns | 1,000x |
| 5M reads/day latency | 80,000 seconds | 80 seconds | 22 hours recovered |
| 100K reads/sec budget | 1,600 sec/sec latency | 1.6 sec/sec | 99.9% eliminated |
| Annual compute waste | 8,030 hours | 8 hours | 8,022 hours recovered |
Read that last row again. 8,022 hours per year. That's 334 days of compute time your infrastructure is currently spending on cache round-trips. Cachee gives it back.
And 5 million reads/day is conservative. Here's what the waste looks like at real-world scale:
| Workload | Reads/Day | Redis Waste/Year | Cachee/Year | Time Recovered |
|---|---|---|---|---|
| Small SaaS | 1M | 1,606 hours | 1.6 hours | 67 days |
| Mid-market platform | 5M | 8,030 hours | 8 hours | 334 days |
| Trading desk | 10M | 16,060 hours | 16 hours | 1.8 years |
| Large SaaS / ad tech | 50M | 80,300 hours | 80 hours | 9.2 years |
| Tier 1 platform | 500M | 803,000 hours | 803 hours | 91.6 years |
| Hyperscale | 1B | 1,606,000 hours | 1,606 hours | 183 years |
Where the 1,000x Comes From
It's not magic. It's architecture. Redis is a network service. Cachee is an in-process engine. The difference is the same as the difference between reading a variable in memory and making an HTTP call to read it.
The engine is a Cachee-FLU adaptive eviction cache — the same algorithm Google uses in Caffeine (Java), but implemented in Rust with zero-copy Bytes, pre-compressed Brotli/Gzip at write time, and xxHash ETags for 304 Not Modified. Hot keys stay in L1. Cold keys fall through to your existing Redis as L2.
cachee> SET price:AAPL "182.50"
OK (14µs)
cachee> GET price:AAPL
"182.50" (31ns)
cachee> GET price:AAPL
"182.50" (31ns) ← same latency on the millionth read
Your Redis client already speaks RESP. Point it at Cachee instead of Redis. 177+ commands. Hashes, sorted sets, lists, streams, vectors, Lua scripting. Zero code changes.
But We Didn't Stop at Speed
When your cache is in-process and running at 31ns, you can do things that are architecturally impossible over a network:
Time-travel reads. GET_AT price:AAPL 1711640527445 — the exact value at any millisecond. Debug a production incident by rewinding your cache. Prove to your FINRA auditor what data your system saw at execution time.
Snapshot isolation. MVCC_READ price:AAPL 1 — readers never block writers. Your analytics query sees consistent state while the pricing feed writes at full speed. Zero lock contention.
Dependency cascade. CASCADE user:123 — change a source record, every derived cache key auto-invalidates transitively. No stale data. No manual cache busting.
Cache contracts. CONTRACT SET pricing 5000 https://api/prices 10000 — per-key freshness SLAs. Auto-refresh at 80% of deadline. Every refresh logged. Hand the compliance report to your auditor.
Post-quantum attestation. Every cache entry signed with ML-DSA-65 (Dilithium). Tamper detected at read time. Cache poisoning — wrong data served to your application — caught before it matters.
What This Means for Your Business
For a trading desk: 0.1-0.5 bps per order in improved fill quality on $2.5B notional. That's $250K-$1.25M/year in execution quality alone.
For a SaaS platform: API response times drop from 20-50ms to under 2ms. Your P99 becomes someone else's P50.
For an AI pipeline: embedding lookups at 31ns instead of 5ms from a vector database. Your model spends time thinking, not waiting.
For your infrastructure budget: L1 absorbs 99%+ of reads. Your ElastiCache cluster drops from 6 nodes to 1 fallback. $10K-$20K/year in Redis you don't need.
The Origin Story
Cachee wasn't built as a cache company. It was built inside H33, a post-quantum cryptography platform that processes 2.17 million authentications per second. STARK proof lookups were bottlenecking the pipeline at 339µs through Redis. We built an in-process L1 and dropped it to 0.059µs. That cache became Cachee.
A post-quantum cryptography company that built the fastest cache engine in the world because it had to.
The Numbers That Matter
Cache performance discussions get philosophical fast. Here are the actual measured numbers from production deployments running on documented hardware, so you can compare against your own infrastructure instead of trusting marketing copy.
- L0 hot path GET: 28.9 nanoseconds on Apple M4 Max, single-threaded against pre-warmed in-memory cache. This is the floor — there's no faster way to read a key.
- L1 CacheeLFU GET: ~89 nanoseconds on AWS Graviton4 (c8g.metal-48xl). Sharded DashMap with admission filtering.
- Sustained throughput: 32 million ops/sec single-threaded on M4 Max, 7.41 million ops/sec at 16 workers on Graviton4 c8g.16xlarge.
- L2 fallback: Sub-millisecond hits against ElastiCache Redis 7.4 over same-AZ network when L1 misses cascade through.
The compounding effect matters more than any single number. A 28-nanosecond L0 hit means your application spends almost zero time on cache lookups in the hot path, leaving the CPU free for the actual business logic that generates revenue.
Average Latency Hides The Real Story
Average latency is the most misleading number in cache benchmarking. The percentile distribution is what actually breaks production systems. Tail latency — the slowest 0.1% of requests — is where users notice the lag and where SLAs get violated.
| Percentile | Network Redis (same-AZ) | In-process L0 |
|---|---|---|
| p50 | ~85 microseconds | 28.9 nanoseconds |
| p95 | ~140 microseconds | ~45 nanoseconds |
| p99 | ~280 microseconds | ~80 nanoseconds |
| p99.9 | ~1.2 milliseconds | ~150 nanoseconds |
The p99.9 spike on networked Redis isn't a bug — it's the cost of running a single-threaded event loop that occasionally blocks on background tasks like RDB snapshots, AOF rewrites, and expired-key sweeps. Cachee's L0 stays inside a few hundred nanoseconds because the hot-path read is a lock-free shard lookup with no background work scheduled on the same thread.
If your application is sensitive to tail latency — payments, real-time bidding, fraud detection, trading — the p99.9 number is the one to optimize against. Average latency improvements that don't move the tail are vanity metrics.
Memory Efficiency Is The Hidden Cost Lever
Throughput numbers get the headlines but memory efficiency determines your monthly bill. A cache that stores the same hot data in less RAM lets you run a smaller instance class — and on AWS that's the difference between profitable and breakeven for a lot of services.
Redis stores each key as a Simple Dynamic String with 16 bytes of header overhead, plus dictEntry pointers in the main hashtable, plus embedded TTL metadata. For 1KB values, per-entry overhead lands around 1100-1200 bytes once you account for hashtable load factor and slab fragmentation. At a million keys, that's roughly 1.2 GB of resident memory just for the data.
Cachee's L1 layer uses sharded DashMap entries with compact packing — a 64-bit key hash, value bytes, an 8-byte expiry timestamp, and a small frequency counter for the CacheeLFU admission filter. Per-entry overhead lands at roughly 40 bytes of structural data on top of the value itself. For the same million-key workload, that's about 13% smaller resident memory. On AWS ElastiCache pricing, that gap is the difference between needing a cache.r7g.large versus a cache.r7g.xlarge for borderline workloads.
Observability And What To Measure
You can't tune what you can't measure. The four metrics that matter for any production cache deployment, in order of importance:
- Hit rate, broken down by key prefix or namespace. A global hit rate of 92% sounds great until you discover that one critical namespace is sitting at 40% and dragging your tail latency. Per-prefix hit rates expose which workloads are getting cache value and which aren't.
- Latency percentiles, not averages. p50, p95, p99, and p99.9 for both cache hits and cache misses. The cache miss latency is your fallback path performance — when the cache fails, this is what your users actually experience.
- Memory pressure and eviction rate. If your eviction rate is climbing while your hit rate stays flat, you're under-provisioned. If both are climbing, your access pattern shifted and you need to retune TTLs or rethink what you're caching.
- Stale-read rate. The percentage of cache hits that returned a value the application then discovered was stale. This is the canary for your invalidation strategy. If it's above 1%, your invalidation logic has a bug.
Cachee exposes all four out of the box via Prometheus metrics on the standard scrape endpoint, plus a real-time SSE stream for dashboards that need sub-second visibility. The right time to wire these into your monitoring stack is before the migration, not after the first incident.
See 1,000x for Yourself
Watch 31ns race 16ms. Try commands Redis can't do. See the coherence.
Live Demo Full Benchmark