AI and LLMMachine learningPerformance and Scale plans

Real-Time ML Feature Store

Typed features for users, items and sessions, written by your pipelines and read by your models at inference time, with their age attached.

feature types
3
returned with every read
Age
reads for many entities
Batch
Step 1 of 5
Define the schema

A typed group. Wrong types are rejected at write time.

Example sessionplaying
# Define the schema
hotkv> FEATURE.CREATE user_features "Signals for scoring" SCHEMA age int64 ctr double country string
OK

An animated walkthrough with real HotKV commands and example replies. Click any step to jump to it.

The problem

A model in production is only as good as the features it sees at inference time. Offline warehouses are too slow to query per request, and a plain key-value store has no schema, so a pipeline bug that writes text into a numeric feature is discovered by the model, not by the store.

How HotKV handles it

Feature groups in HotKV have a typed schema. Streaming jobs write fresh values, batch jobs backfill with their own timestamps, and the model server reads one entity or a whole batch in a single call. Each read returns when the entity was last updated and how old it is, so stale features can be detected.

Step by step

What happens, command by command

  1. 01

    Define the schema

    A typed group. Wrong types are rejected at write time.

    FEATURE.CREATE user_features "Signals for scoring" SCHEMA age int64 ctr double country string
  2. 02

    Stream fresh values

    The streaming job updates features as events arrive.

    FEATURE.SET user_features user:42 ctr 0.051 country DE
  3. 03

    Backfill with the right time

    Batch jobs stamp entities with the time the values were true, not the time they were loaded.

    FEATURE.SETAT user_features user:42 1790985600123 age 31
  4. 04

    Score a checkout

    The model server reads the user's features, with the update time and age in milliseconds.

    FEATURE.GET user_features user:42
  5. 05

    Batch for many entities

    Rank a page of candidates with one call.

    FEATURE.BATCH user_features user:42 user:77 user:91 FEATURES ctr
Where it fits

Real-world scenarios

Fraud and risk scoring

Card velocity, device age and account history are read at checkout, in the request path, before the payment is approved.

Ranking and ads

Click-through rates and recent interests are read for every candidate on a page in a single batch call.

Dynamic pricing

Demand and inventory features are streamed in continuously and read by the pricing model on every quote.

Built in

What you get

Typed schemas

int64, double and string features. Writes with the wrong type are rejected.

FEATURE.CREATEFEATURE.SCHEMA

Streaming and backfill

Write with the current time or with the time the values were true.

FEATURE.SETFEATURE.SETAT

Freshness on every read

Each read returns the entity's update time and age.

FEATURE.GET

Batch serving

Many entities, selected features, one call.

FEATURE.BATCHFEATURE.STATS

Common questions

Does this replace my offline feature store?

It is the online side, for low-latency reads at inference time. Training data can still come from your warehouse, with backfills written into HotKV with FEATURE.SETAT.

How do I detect stale features?

Every FEATURE.GET returns the last update time and the age in milliseconds, so the model server can reject or flag old values.

Which plans include it?

The feature store is part of the Performance and Scale plans.

Related use cases

Try it on your own workload

HotKV speaks the Redis protocol, so you can point an existing client at it and run these same commands.