Ruvio.Client.AspNetCore 0.2.13

dotnet add package Ruvio.Client.AspNetCore --version 0.2.13
                    
NuGet\Install-Package Ruvio.Client.AspNetCore -Version 0.2.13
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Ruvio.Client.AspNetCore" Version="0.2.13" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ruvio.Client.AspNetCore" Version="0.2.13" />
                    
Directory.Packages.props
<PackageReference Include="Ruvio.Client.AspNetCore" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Ruvio.Client.AspNetCore --version 0.2.13
                    
#r "nuget: Ruvio.Client.AspNetCore, 0.2.13"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Ruvio.Client.AspNetCore@0.2.13
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Ruvio.Client.AspNetCore&version=0.2.13
                    
Install as a Cake Addin
#tool nuget:?package=Ruvio.Client.AspNetCore&version=0.2.13
                    
Install as a Cake Tool

Ruvio.Client.AspNetCore

Registers Ruvio.Client in an ASP.NET Core service collection. The connection owner and database-scoped command client are separate singletons under one DI lifetime. The client speaks RESP2 and does not send CLIENT SETINFO.

builder.Services.AddRuvioClient("127.0.0.1", 6379, database: 2);

With options:

builder.Services.AddRuvioClient(options =>
{
    options.Host = "127.0.0.1";
    options.Port = 6379;
    options.Database = 2;
    options.Reconnect = true;
    options.MaxReconnectAttempts = 8;
    options.ReconnectBaseDelay = TimeSpan.FromMilliseconds(100);
    options.ReconnectMaxDelay = TimeSpan.FromSeconds(2);
}, connection =>
{
    connection.ConnectionLost += (_, notice) =>
        Console.WriteLine($"lost {notice.Host}:{notice.Port} subscriber={notice.Subscriber}");
    connection.ConnectionRestored += (_, notice) =>
        Console.WriteLine($"restored {notice.Host}:{notice.Port}");
});

Configuration section:

builder.Services.AddRuvioClient(builder.Configuration.GetSection("Ruvio"));
{
  "Ruvio": {
    "Host": "127.0.0.1",
    "Port": 6379,
    "Database": 2,
    "Reconnect": true,
    "MaxReconnectAttempts": 8,
    "ReconnectBaseDelay": "00:00:00.100",
    "ReconnectMaxDelay": "00:00:02"
  }
}

Reconnect defaults to true. A broken command or shard socket is opened again before the next command. The command that discovers the drop fails, so a write is not sent twice. A single GET, MGET, EXISTS, HGET, TTL, or PTTL is sent once more when no reply byte arrived. A pipeline is not retried. Pub/Sub channels are subscribed again on the new socket. Set Reconnect to false and call IRuvioConnection.ReconnectAsync when the application should own the timing. ReconnectDelay is a Func<int, TimeSpan?> and is not read from configuration; return null to stop. When it is set, MaxReconnectAttempts is not applied. The connection callback runs once, after the initial database client is open, so lifecycle handlers are attached before the singleton is handed out. RuvioConnectionNotice carries host, port, whether the socket is the Pub/Sub connection, and the error on a drop.

Connect sends CLUSTER SLOTS and, on a sharded server, routes by hash slot. Database 0 sends nothing after that; any other index sends SELECT on its own standalone command socket. Cluster mode has only database 0. The injected client is fixed to RuvioClientOptions.Database; use IRuvioConnection.GetDatabaseAsync(index) for another database, which returns a separately cached client.

Inject IRuvioClient into services that send commands. Inject IRuvioConnection where code creates database clients, reconnects, or handles lifecycle events. Disposing the DI container disposes the connection and every database client it created. Resolve RuvioConnection once at startup if the process should fail before it accepts traffic:

app.Services.GetRequiredService<RuvioConnection>();

Optional health check

builder.Services.AddHealthChecks().AddRuvio(tags: ["ready"]);
app.MapHealthChecks("/health/ready");

The check sends a bounded PING through the existing IRuvioClient. It creates no polling loop and runs only when the health-check service is invoked. The default timeout is five seconds. It checks command-connection reachability, not every shard, replica freshness, persistence health, or write availability. Prefer a readiness endpoint rather than restarting the application when its dependency is unavailable.

The separately packaged .NET integrations provide IDistributedCache, ASP.NET Core output caching, Data Protection key-ring storage, opt-in distributed rate limiting and HTTP idempotency. Register this client's singleton once; integration packages neither own nor dispose it. Data Protection can select a separate durable, non-evicting connection through its connection-factory overload instead of sharing an eviction-prone cache deployment.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.13 90 10/5/2026
0.2.12 82 10/2/2026
0.2.11 87 10/2/2026
0.2.10 85 10/2/2026
0.2.9 79 10/2/2026
0.2.8 81 10/1/2026
0.2.7 84 9/30/2026
0.2.6 91 9/26/2026
0.2.5 84 9/26/2026
0.2.4 86 9/26/2026
0.2.3 89 9/26/2026
0.2.2 88 9/25/2026
0.2.1 94 9/25/2026
0.2.0 89 9/25/2026
0.1.0 93 9/23/2026