WORKLOAD PATTERN

More features per entity. Less dependence on DRAM.

Serve more features for more users, items and agents. Lavik brings NVMe SSD capacity to Redis-style feature lookups, with hashes for entity records and bounded multi-key reads for the request path.

Lavik 0.2.0Redis / 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

Store the online feature values your pipeline produces in Lavik. Keep feature definitions, event-time processing and training datasets in your existing pipeline; use Lavik for the key-based reads and updates on the serving path. Separating value capacity from DRAM makes wider records and more retained entities affordable.

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

Best for: 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.

Try this command pattern

Redis-compatible commands

Start Lavik 0.2.0 with the quick start, then use these example keys to try the basic operations. Each command links to its options and return values.

Show example commands
redis-cli HSET features:model7:user42 schema 7 as_of 2026-09-21T00:00:00Z visits_7d 12
redis-cli HMGET features:model7:user42 schema visits_7d missing_feature
redis-cli HGET features:model7:user42 as_of
redis-cli EXPIRE features:model7:user42 600
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.

Start with one feature family, preserving its freshness contract and missing-value defaults. Measure the complete feature-fetch budget alongside the model request.

Translate business scale into capacity

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

20×

lower value-capacity cost

At a 20:1 DRAM/NVMe SSD price per GiB, the same value capacity costs 95% less in media. Plan the complete budget with your actual prices, index memory and replicas.

Calculate your capacity cost →