Skip to main content

Packages and namespaces

Each library uses one name for its NuGet package, assembly, and root namespace: install Respire.Search, import Respire.Search. The .NET Aspire integrations are the exception; they follow Aspire's Aspire.<Product> naming.

Public API review and deprecation​

Every shipping package has a checked-in public API baseline in src/<package>/PublicAPI.Shipped.txt and PublicAPI.Unshipped.txt. Both net8.0 and net10.0 check the same baseline: the packages expose the same public surface on both frameworks. These baselines were seeded from the pre-2.0 API; the filename does not declare a stable release. The PublicApiAnalyzers package checks signatures, including nullable annotations, during normal builds. Adding, changing, or removing an API without updating its declaration fails the build. The Modular Pipeline CI workflow builds all packages and frameworks with these checks enabled.

For contributors:

  • Add new declarations to PublicAPI.Unshipped.txt using the analyzer's Declare public API code fix. Review the diff alongside the implementation.
  • Keep shipped declarations. For an intentional removal, add *REMOVED* followed by the old declaration to the unshipped file. A changed signature is a removal plus an addition.
  • Build both target frameworks before submitting the change. API baselines make changes visible for review; they do not authorize a breaking change. After 2.0, preserve compatibility or plan the removal for a major release.
  • At release time, merge accepted unshipped declarations into the shipped baseline, applying removal markers, and reset the unshipped file to #nullable enable.

Deprecations are allowed, including after 2.0. An [Obsolete] attribute must provide a nonempty DiagnosticId and an HTTPS UrlFormat containing {0} (the diagnostic ID), pointing to a published migration note. The note should explain the replacement and migration steps. CI runs Respire.PublicApi.Tests on net8.0 and net10.0 to check exported public types and members in every shipping assembly. Its project references and expected assembly manifest come from RespirePackageProjects in Directory.Build.props, plus Respire.Analyzers, which ships inside the core package rather than as its own package; a missing assembly fails validation. The compiler's required-member compatibility marker is excluded; authored deprecations on constructors with required members still need migration metadata. These checks make no network requests; reviewers verify that the migration note exists.

Packing also runs SDK package validation. See Contributing API changes for the released-package baseline, intentional-break process, and experimental API exceptions.

Choose a package​

Package, assembly, and root namespacePurpose
RespireCore RESP client, commands, connections, serialization, and built-in compression abstractions
Respire.JsonRedis JSON documents
Respire.SearchRedis Search, indexing, aggregation, and vector queries
Respire.VectorDataExplicit AOT-friendly VectorData hash/JSON collections, KNN and hybrid search
Respire.AIRedis chat history, Agent Framework history providers, semantic response caching, and exact-text embedding caching
Respire.TimeSeriesRedis time series
Respire.ProbabilisticBloom, Cuckoo, Count-Min Sketch, Top-K, and t-digest
Respire.AwsAWS IAM credentials for ElastiCache and MemoryDB
Respire.AzureMicrosoft Entra credentials for Azure Managed Redis
Respire.GcpGoogle Cloud IAM credentials for Memorystore for Redis Cluster and Valkey
Respire.CachingIDistributedCache and IBufferDistributedCache integration
Respire.Caching.HybridRedis-backed L2 storage for HybridCache
Respire.OutputCachingASP.NET Core output caching store
Respire.IdempotencyASP.NET Core idempotency-key response replay
Respire.RateLimitingRedis-backed ASP.NET Core rate limiting policies
Respire.DataProtectionDataProtection key storage and payload encryption
Respire.FusionCacheFusionCache backplane and distributed locker sharing an existing Respire client
Respire.SignalRSignalR scale-out sharing an existing Respire client
Respire.StreamingHosted stream consumers with bounded concurrency and scoped handlers
Respire.Streaming.DashboardAuthorized ASP.NET Core dashboard for job queues, stream groups, pending deliveries, and dead-letter actions
Respire.StackExchangeCompatBinary-safe value conversion, native command bridge, and a limited IConnectionMultiplexer adapter for incremental StackExchange.Redis migration
Respire.CoordinationRate limiters, semaphores, read-write locks, latches, leases, and Redlock
Respire.DependencyInjection.NET dependency injection registration
Respire.HealthChecksASP.NET Core health checks using existing client connections
Respire.ResiliencePolly v8 and Microsoft.Extensions.Resilience with one command retry owner
Aspire.Respire.NET Aspire client registration, configuration, health checks, and telemetry
Aspire.Respire.DistributedCaching, Aspire.Respire.HybridCaching, Aspire.Respire.OutputCachingIDistributedCache, HybridCache, and output caching on an Aspire-registered client
Respire.Compression.Lz4Optional LZ4 value codec
Respire.Serialization.MessagePackMessagePack serializer and DI registration
Respire.Serialization.Protobufprotobuf-net serializer and DI registration
Respire.Serialization.MemoryPackMemoryPack serializer and DI registration
Respire.Compression.ZstdOptional Zstandard value codec
Respire.TestingIn-memory RESP test server
Respire.Testing.ContainersRedis and Valkey container fixtures
  • Respire.Analyzers ships inside the core Respire package, not as its own package.
  • Subnamespaces such as Respire.Serialization and Respire.Compression belong to the core package. Respire.Compression holds the shared codec options; import Respire.Compression.Lz4 or Respire.Compression.Zstd for a codec.
  • The Aspire packages put their registration methods in Microsoft.Extensions.Hosting.
  • Extension properties such as redis.Json and redis.Coordination need C# 14 (the net10.0 default). On earlier language versions, construct the wrapper: new RespireJsonClient(redis) or new RespireCoordination(redis).

Keep internal API consumers on the same version​

Respire.Caching, Respire.Coordination, Respire.StackExchangeCompat, Respire.DataProtection, Respire.Json, Respire.Compression.Lz4, Respire.Compression.Zstd, Respire.Testing, Respire.Streaming, and Respire.Streaming.Dashboard depend on core implementation details. Their NuGet packages require the exact Respire version they were built against, including the prerelease suffix. Upgrade these packages together with Respire; mixing versions can break internal calls at runtime.

The three Respire.Serialization.* adapters also pin their core dependency exactly so serializer and client packages are upgraded together, even though they use public APIs.

Redis features and custom modules​

Redis Open Source 8 includes JSON, Search, time series, and probabilistic data types; their client APIs are optional packages. Earlier Redis needs the matching modules or Redis Stack, and other RESP servers may support only some commands. Installing a package does not enable a server feature.

The name Respire.Extensions.<ModuleName> is reserved for custom, separately installed Redis modules; no current package uses it. For custom commands, use the raw command API or command generator.

For older Respire.Extensions.* references, see the package migration guide.