Skip to content

feat(caching): namespace every Redis key and channel with CachingOptions:KeyPrefix - #13

Merged
maxiar merged 2 commits into
developfrom
feat/redis-key-prefix
Oct 26, 2026
Merged

maxiar merged 2 commits into
developfrom
feat/redis-key-prefix

Conversation

@maxiar

@maxiar maxiar commented Oct 26, 2026

Copy link
Copy Markdown
Owner

Brings upstream PR fullstackhero#1450 into the fork.

Conflict in Caching/Extensions.cs resolved by keeping the fork's configurable Data Protection application name and database-store switch, and applying the key prefix to the Redis key-ring key. The fork's appsettings.json also gets a comment explaining KeyPrefix.

Verified on this branch: Framework.Tests 381/381, Caching.Tests 31/31, Architecture.Tests 61/61, Integration.Tests (caching, Data Protection, idempotency) 20/20.

🤖 Generated with Claude Code

maxiar and others added 2 commits October 26, 2026 13:06
…ons:KeyPrefix

Every key the framework writes to Redis was unprefixed (cache entries, HybridCache
tag invalidations, the Data Protection key ring, idempotency locks, quota counters)
and the SignalR backplane used a fixed `fsh-signalr` channel. Applications or
environments sharing one Redis server collided; a defaultDatabase index does not
help the backplane, because pub/sub ignores the database.

CachingOptions:KeyPrefix (normalized by Core's RedisKeyPrefix) now namespaces all
of them: RedisCacheOptions.InstanceName, the Data Protection list key, the
idempotency reservation, quota counters (QuotaOptions:KeyPrefix overrides) and the
SignalR channel prefix. Empty keeps today's layout. The template ships FSH.Starter /
FSH.Starter:prod, renamed per project by sourceName.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	src/BuildingBlocks/Caching/Extensions.cs
@maxiar
maxiar merged commit bd6a91b into develop Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant