WORKLOAD PATTERN

More features per entity. Less dependence on DRAM.

For recommendation and inference services reading precomputed feature values through Redis. Scale the serving payload across users, items, tenants, and model versions without assuming every feature must occupy memory.

v0.1.0-beta.1Redis / ValkeyNVMe SSD

Why capacity and latency collide

Feature capacity multiplies along several axes at once: entity count, feature width, freshness windows, and concurrently served model versions. The active population can shift faster than a small hot set can stabilize, particularly during launches or broad candidate retrieval.

Moving less-used features to a storage tier saves memory, but one late lookup can hold up an inference request. Measure the distribution of complete feature-vector assembly time, including cold entities and missing features; a store-wide average is not the model's serving budget.

DESIGN FOR THIS DATA PATH

Where Lavik fits

Use Lavik as the online key-value serving layer for application-prepared features. NVMe SSD holds the value capacity, while the in-memory key index supports lookups. Keep feature computation, event-time correctness, schema management, and offline training datasets in their existing systems.

REQUEST PATHInference / recommendation serviceRedis-compatible client
LavikDRAM · key indexNVMe SSD · value storage
Application-managed refresh / projections from: Feature pipeline + application materializer

Strongest evaluation fit: Precomputed, reconstructable feature values with substantial payload per entity and a clear materialization pipeline.

Design decisions that determine the outcome

01

Make the serving contract versioned

Choose packed strings or hashes based on the operations your client actually uses. Include schema/model version and an as-of timestamp in the record. Define defaults for absent fields and a freshness cutoff independently of storage expiry.

02

Account for the entire lookup fan-out

Budget entity reads, feature decoding, joins, and inference separately. Benchmark bounded HMGET/MGET requests with the real feature width. Atomic writes to a record do not by themselves provide an event-time-consistent snapshot across all entities.

03

Test your connector, not just its command names

Map connector initialization, Lua calls, pipelines, field expiry, and serialization to the versioned command reference. The verified client examples are useful starting points; they do not certify Feast or another feature-store connector. Plan backfill throttling and reconciliation after lag.

A command example executed on Lavik

Docker check passed

A 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
> HSET features:model7:user42 schema 7 as_of 2026-09-21T00:00:00Z visits_7d 12
3

> HMGET features:model7:user42 schema visits_7d missing_feature
["7","12",null]

> HGET features:model7:user42 as_of
"2026-09-21T00:00:00Z"

> EXPIRE features:model7:user42 600
1
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
Start a local instance

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.

Cold-entity inference

Replay production entity distributions plus a uniform-access stress case at full feature width.

Accept when

Feature-assembly p99 fits its portion of the inference budget; missing/stale feature rates remain acceptable.

Backfill during serving

Read while refreshing or backfilling a second model version; retain application timestamps.

Accept when

Read deadlines and freshness objectives hold together; the publisher cannot overwrite a newer version with an older event.

Connector correctness

Exercise actual connector calls, partial records, absent entities, reconnects, and deserialization failures.

Accept when

Returned values and fallback decisions match the existing serving contract before routing inference traffic.

This is a key-value serving design, not a built-in feature platform, vector index, or point-in-time training join. A tiny high-contention counter is a different workload from the published 1 KiB GET/SET benchmark.

Translate business scale into capacity

Value payload ≈ entities × serialized feature bytes × simultaneously served versions

20×

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