GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat: Addresses performance issues in the Redis online store by ntkathole · Pull Request #6337 · feast-dev/feast

Conversation

@ntkathole

@ntkathole ntkathole commented Apr 26, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Summary

Addresses several correctness and performance issues in the Redis online store
identified in #3596.

Changes

1. Batched get_online_features pipeline (read latency: O(N_fv) → O(1))

The base class get_online_features calls online_read once per feature view,
each opening and executing its own Redis pipeline. Since all feature views for
the same entity already share one Redis hash key, all HMGET commands across
every feature view can be batched into a single pipeline execution.

RedisOnlineStore now overrides get_online_features to pre-compute all
entity keys and hash field keys, issue one pipeline.execute() for everything,
then demultiplex results back per feature view. For a request spanning N feature
views this cuts Redis round trips from N to 1.

2. Fixed delete_table N+1 query pattern

The previous implementation called client.hgetall(key) synchronously inside
the scan_iter loop — one blocking round trip per entity key. Replaced with a
three-phase approach:

  • Phase 1: collect all matching keys from SCAN (no per-key round trips)
  • Phase 2: pipeline HKEYS for all collected keys (1 round trip)
  • Phase 3: pipeline all HDEL/DEL commands (1 round trip)

3. skip_dedup config option for write throughput

Added skip_dedup: bool = False to RedisOnlineStoreConfig. When enabled,
online_write_batch skips the first timestamp-read pipeline and writes all
rows in a single pass, halving round trips. Intended for initial bulk loads or
append-only pipelines where concurrent out-of-order writes are not a concern.

4. online_write_batch_async implemented

Previously raised NotImplementedError. Now fully implemented using the
existing _get_client_async infrastructure, with skip_dedup support.

Files Changed

  • sdk/python/feast/infra/online_stores/redis.py — only file modified; base
    class OnlineStore and all other store implementations are untouched.

Performance Impact

Scenario Before After
get_online_features with N feature views N Redis round trips 1 Redis round trip
online_write_batch with skip_dedup=True 2 round trips 1 round trip
delete_table with K entity keys K+1 round trips 3 round trips
Async batch writes NotImplementedError Supported

Related

  • Fixes Redis Online Store adapter is not production-ready #3596

Open in Devin Review

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ntkathole ntkathole self-assigned this Apr 26, 2026
@ntkathole
ntkathole requested a review from a team as a code owner April 26, 2026 13:07
devin-ai-integration[bot]
devin-ai-integration Bot reviewed Apr 26, 2026
View reviewed changes

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 5 additional findings.

Open in Devin Review

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ntkathole
ntkathole force-pushed the redis_perf_improve branch from c202cf6 to bde2067 Compare April 26, 2026 13:22
@ntkathole ntkathole added the ok-to-test label Apr 26, 2026
@ntkathole
ntkathole force-pushed the redis_perf_improve branch from bde2067 to 59b6694 Compare April 26, 2026 14:02
franciscojavierarceo
franciscojavierarceo approved these changes Apr 30, 2026
View reviewed changes
@ntkathole
feat: Addresses performance issues in the Redis online store
4471231
Signed-off-by: ntkathole <[email protected]>
@ntkathole
ntkathole force-pushed the redis_perf_improve branch from 59b6694 to 4471231 Compare April 30, 2026 16:57
@ntkathole
ntkathole merged commit 2e50da0 into feast-dev:master Apr 30, 2026
16 of 26 checks passed

Uh oh!

There was an error while loading. Please reload this page.

This was referenced Sep 22, 2026
Redis online store: HGETALL for wide reads, and an opt-in GIL-free client (valkey-glide) for get_online_features #6856
Open
feat: Add optional GLIDE client for Redis online reads #6870
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@devin-ai-integration devin-ai-integration[bot] devin-ai-integration[bot] left review comments
@franciscojavierarceo franciscojavierarceo franciscojavierarceo approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@ntkathole ntkathole

Labels

ok-to-test

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Redis Online Store adapter is not production-ready

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@ntkathole @franciscojavierarceo
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.