Why capacity and latency collide
Audience profiles, segment snapshots, creative metadata, and campaign variants grow with reachable users and retention, not just impressions per second. A small memory hot set may not capture the next burst of identities or an expanded campaign audience.
The deadline is unforgiving: a context read that arrives after the decision is useless even if it succeeds. SSD capacity is valuable only when the qualifying workload delivers enough useful responses on time. Record late responses and fallback decisions, not just server QPS.
DESIGN FOR THIS DATA PATH
Where Lavik fits
Evaluate Lavik for capacity-heavy profile and campaign read models accessed through known Redis commands. Its published one-billion-key random-read sweep provides concrete starting points for latency-constrained testing. Keep each serving deadline explicit and choose a lower-load operating point with headroom rather than adopting a peak-throughput number as an SLO.
Strongest evaluation fit: High-cardinality, reconstructable enrichment payload with measured per-request latency headroom.
Design decisions that determine the outcome
Budget the decision, not one GET
Subtract network, fan-out, decoding, model/scoring, and downstream time from the total deadline. Use bounded batches where their semantics fit. Define what a missing or late profile means before load testing; do not hide deadline misses inside client retries.
Separate payload serving from contended counters
Profile lookups and per-event budget/frequency updates have different contention and correctness needs. The GET/SET benchmark does not establish exactly-once increments, cross-key budget enforcement, or an auction framework's compatibility. Qualify those paths independently.
Propagate change and deletion deliberately
Version audience and campaign records in application publishers, bound freshness, and test explicit invalidation across serving copies. Cache TTL is a retention tool; it does not by itself implement your application's consent, suppression, or deletion workflow.
A command example executed on Lavik
Docker check passedA functional check using example data, an isolated instance, and actual replies. It verifies the command sequence shown; it is not a performance or end-to-end correctness test of the industry workload.
Inspect actual requests and replies
> SET audience:v2:demo42 "{\"segments\":[\"outdoor\"],\"version\":2}" EX 120
"OK"
> SET campaign:v4:demo7 "{\"creative\":\"banner7\",\"version\":4}" EX 120
"OK"
> MGET audience:v2:demo42 campaign:v4:demo7
["{\"segments\":[\"outdoor\"],\"version\":2}","{\"creative\":\"banner7\",\"version\":4}"]
> DEL audience:v2:demo42
1
> MGET audience:v2:demo42 audience:v2:missing
[null,null]Version and verification scope
lavik 0.1.0-beta.1 · Minimal package · aarch64 · 2026-09-21
Offline container with a read-only root, temporary data, and a reset between scenarios. Examples use an authenticated local connection. TTL ranges and exact arguments are preserved in the execution receipt.
Execution receipt ↗What should decide the migration?
Write down the application budgets before replaying traffic. Validate these criteria in your own system; published benchmarks are a starting point.
Deadline-constrained lookup load
Use an arrival-rate-controlled generator and the real fan-out, payload sizes, and cold-key fraction.
Useful responses before the deadline meet the target; queues and retry traffic remain bounded.
Audience expansion and churn
Grow the keyspace and rotate active cohorts while publishers update records.
Decision p99/p99.9, fallback rate, and freshness remain acceptable across transitions.
Counter and invalidation correctness
Test the exact update scripts, retries, duplicates, and deletion propagation used by the application.
Business invariants hold independently of the successful profile-read benchmark.
A hard microsecond-scale or sub-millisecond end-to-end deadline is not established by the peak benchmark. Use the full connection sweep, test your arrival process, and reject the migration if its deadline budget cannot be met.
Translate business scale into capacity
Value payload ≈ retained identities × profile bytes + campaign/context snapshots
lower value-capacity cost
When DRAM costs 20 times as much per GiB as NVMe SSD, the same value payload costs one twentieth as much for media capacity: 95% less. Include index memory, CPU, replicas, storage amplification, and recovery headroom in the complete deployment.
Calculate with your capacity prices →