Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
<!-- SER001/SER002/SER003/SER006/SER007/SER008/SER010 retired (vector sets, Redis 8.4/8.6/8.8/8.10 features,
geo-redundant failover and maintenance notifications, no longer experimental); IDs reserved, see Experiments.cs -->
<NoWarn>$(NoWarn);NU5105;NU1507;SER004;SER005;SER009;SER012</NoWarn>
<PackageReleaseNotes>https://github.com/StackExchange/StackExchange.Redis/releases</PackageReleaseNotes>
<PackageReleaseNotes>https://github.com/seredis/StackExchange.Redis/releases</PackageReleaseNotes>
<PackageProjectUrl>https://seredis.dev/</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>

<LangVersion>14</LangVersion>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/StackExchange/StackExchange.Redis/</RepositoryUrl>
<RepositoryUrl>https://github.com/seredis/StackExchange.Redis/</RepositoryUrl>

<DebugSymbols>true</DebugSymbols>
<DebugType>embedded</DebugType>
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ For all documentation, [see here](https://seredis.dev/).

#### Build Status

[![CI](https://github.com/StackExchange/StackExchange.Redis/actions/workflows/CI.yml/badge.svg)](https://github.com/StackExchange/StackExchange.Redis/actions/workflows/CI.yml)
[![CI](https://github.com/seredis/StackExchange.Redis/actions/workflows/CI.yml/badge.svg)](https://github.com/seredis/StackExchange.Redis/actions/workflows/CI.yml)

#### Package Status

| Package | NuGet Stable | NuGet Pre-release | Downloads |
| ------- | ------------ | ----------------- | --------- |
| [StackExchange.Redis](https://www.nuget.org/packages/StackExchange.Redis/) | [![StackExchange.Redis](https://img.shields.io/nuget/v/StackExchange.Redis.svg)](https://www.nuget.org/packages/StackExchange.Redis/) | [![StackExchange.Redis](https://img.shields.io/nuget/vpre/StackExchange.Redis.svg)](https://www.nuget.org/packages/StackExchange.Redis/absoluteLatest) | [![StackExchange.Redis](https://img.shields.io/nuget/dt/StackExchange.Redis.svg)](https://www.nuget.org/packages/StackExchange.Redis/) |

Release notes at: [GitHub Releases](https://github.com/StackExchange/StackExchange.Redis/releases) (3.0 onwards; [earlier releases](https://seredis.dev/ReleaseNotes))
Release notes at: [GitHub Releases](https://github.com/seredis/StackExchange.Redis/releases) (3.0 onwards; [earlier releases](https://seredis.dev/ReleaseNotes))
2 changes: 1 addition & 1 deletion docs/404.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<li><a href="/Timeouts">Timeouts</a> &mdash; reading a timeout message</li>
<li><a href="/Configuration">Configuration</a></li>
<li><a href="/Basics">Basics</a></li>
<li><a href="https://github.com/StackExchange/StackExchange.Redis/releases">Release notes</a>
<li><a href="https://github.com/seredis/StackExchange.Redis/releases">Release notes</a>
(3.0 onwards; <a href="/ReleaseNotes">earlier releases</a>)</li>
</ul>

Expand Down
2 changes: 1 addition & 1 deletion docs/CommandCoverage.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Which server commands StackExchange.Redis does not expose as typed APIs, and why

Upstream: redis/redis@6a5fee67583480de1fec323649f43fd000001b49 (`src/commands`, unstable, 2026-10-30). Maintained by the `audit-command-coverage` skill under `.claude/skills/`, which re-diffs this file against upstream and reports only what changed.

This supersedes the hand-maintained list in [#2055](https://github.com/StackExchange/StackExchange.Redis/issues/2055).
This supersedes the hand-maintained list in [#2055](https://github.com/seredis/StackExchange.Redis/issues/2055).

## Rules

Expand Down
628 changes: 314 additions & 314 deletions docs/ReleaseNotes.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/RespLogging.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ If the RESP streams are *not* valid, an exception will provide further details.
**An exception here is strong evidence that there is a fault either in the redis server, or an intermediate proxy**.

Conversely, if the library reported a protocol failure but the validation step here *does not* report an error, then
that is strong evidence of a library error; [**please report this**](https://github.com/StackExchange/StackExchange.Redis/issues/new) (with details).
that is strong evidence of a library error; [**please report this**](https://github.com/seredis/StackExchange.Redis/issues/new) (with details).

You can also *replay* the conversation locally, seeing the individual requests and responses:

Expand Down
2 changes: 1 addition & 1 deletion docs/ServerMaintenanceEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ multiplexer.ServerMaintenanceEvent += (object sender, ServerMaintenanceEvent e)
}
};
```
You can see the schema for the `AzureMaintenanceEvent` class [here](https://github.com/StackExchange/StackExchange.Redis/blob/main/src/StackExchange.Redis/Maintenance/AzureMaintenanceEvent.cs). Note that the library automatically sets the `ReceivedTimeUtc` timestamp when the event is received, so if you see in your logs that `ReceivedTimeUtc` is after `StartTimeUtc`, this may indicate that your connections are under high load.
You can see the schema for the `AzureMaintenanceEvent` class [here](https://github.com/seredis/StackExchange.Redis/blob/main/src/StackExchange.Redis/Maintenance/AzureMaintenanceEvent.cs). Note that the library automatically sets the `ReceivedTimeUtc` timestamp when the event is received, so if you see in your logs that `ReceivedTimeUtc` is after `StartTimeUtc`, this may indicate that your connections are under high load.

## Walking through a sample maintenance event

Expand Down
2 changes: 1 addition & 1 deletion docs/Testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ This can be done either by installing Docker and running `docker compose up` in

Tests default to `127.0.0.1` as their server, however you can override any of the test IPs/hostnames and ports by placing a `TestConfig.json` in the `StackExchange.Redis.Tests\` folder. This file is intentionally in `.gitignore` already, as it's for *your* personal overrides. This is useful for testing local or remote servers, different versions, various ports, etc.

You can find all the JSON properties at [TestConfig.cs](https://github.com/StackExchange/StackExchange.Redis/blob/main/tests/StackExchange.Redis.Tests/Helpers/TestConfig.cs). An example override (everything not specified being a default) would look like this:
You can find all the JSON properties at [TestConfig.cs](https://github.com/seredis/StackExchange.Redis/blob/main/tests/StackExchange.Redis.Tests/Helpers/TestConfig.cs). An example override (everything not specified being a default) would look like this:
```json
{
"RunLongRunning": true,
Expand Down
4 changes: 2 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
StackExchange.Redis
===================

- [Release Notes](https://github.com/StackExchange/StackExchange.Redis/releases) (3.0 onwards; [earlier releases](ReleaseNotes))
- [Release Notes](https://github.com/seredis/StackExchange.Redis/releases) (3.0 onwards; [earlier releases](ReleaseNotes))

## Overview

Expand Down Expand Up @@ -70,4 +70,4 @@ Questions and Contributions
If you think you have found a bug or have a feature request, please [report an issue][2], or if appropriate: submit a pull request. If you have a question, feel free to [contact me](https://github.com/mgravell).

[1]: https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/task-parallel-library-tpl
[2]: https://github.com/StackExchange/StackExchange.Redis/issues?state=open
[2]: https://github.com/seredis/StackExchange.Redis/issues?state=open
2 changes: 1 addition & 1 deletion docs/rules/SER300.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ about the code - so it is deliberately conservative and stays quiet wherever it
still works, and will keep working: this is a suggestion, not a defect report.

That conservatism is meant to make a false positive rare, not impossible. **If you think the rule has flagged
something it should not have, please [report it](https://github.com/StackExchange/StackExchange.Redis/issues/new)**,
something it should not have, please [report it](https://github.com/seredis/StackExchange.Redis/issues/new)**,
including the transaction as written. A rule that fires on correct code is a bug in the rule - and one that
reaches every consumer of the package - so it is worth fixing rather than quietly suppressing.

Expand Down
2 changes: 1 addition & 1 deletion docs/rules/SER301.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ about the code - so it is deliberately conservative and stays quiet wherever it
still works, and will keep working: this is a suggestion, not a defect report.

That conservatism is meant to make a false positive rare, not impossible. **If you think the rule has flagged
something it should not have, please [report it](https://github.com/StackExchange/StackExchange.Redis/issues/new)**,
something it should not have, please [report it](https://github.com/seredis/StackExchange.Redis/issues/new)**,
including the transaction as written. A rule that fires on correct code is a bug in the rule - and one that
reaches every consumer of the package - so it is worth fixing rather than quietly suppressing.

Expand Down
2 changes: 1 addition & 1 deletion docs/rules/SER302.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ about the code - so it is deliberately conservative and stays quiet wherever it
still works, and will keep working: this is a suggestion, not a defect report.

That conservatism is meant to make a false positive rare, not impossible. **If you think the rule has flagged
something it should not have, please [report it](https://github.com/StackExchange/StackExchange.Redis/issues/new)**,
something it should not have, please [report it](https://github.com/seredis/StackExchange.Redis/issues/new)**,
including the transaction as written. A rule that fires on correct code is a bug in the rule - and one that
reaches every consumer of the package - so it is worth fixing rather than quietly suppressing.

Expand Down
2 changes: 1 addition & 1 deletion docs/rules/SER303.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ about the code - so it is deliberately conservative and stays quiet wherever it
still works, and will keep working: this is a suggestion, not a defect report.

That conservatism is meant to make a false positive rare, not impossible. **If you think the rule has flagged
something it should not have, please [report it](https://github.com/StackExchange/StackExchange.Redis/issues/new)**,
something it should not have, please [report it](https://github.com/seredis/StackExchange.Redis/issues/new)**,
including the transaction as written. A rule that fires on correct code is a bug in the rule - and one that
reaches every consumer of the package - so it is worth fixing rather than quietly suppressing.

Expand Down
2 changes: 1 addition & 1 deletion docs/rules/SER304.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ about the code - so it is deliberately conservative and stays quiet wherever it
still works, and will keep working: this is a suggestion, not a defect report.

That conservatism is meant to make a false positive rare, not impossible. **If you think the rule has flagged
something it should not have, please [report it](https://github.com/StackExchange/StackExchange.Redis/issues/new)**,
something it should not have, please [report it](https://github.com/seredis/StackExchange.Redis/issues/new)**,
including the transaction as written. A rule that fires on correct code is a bug in the rule - and one that
reaches every consumer of the package - so it is worth fixing rather than quietly suppressing.

Expand Down
2 changes: 1 addition & 1 deletion docs/rules/SER305.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,6 @@ or locally:

If you believe it has flagged something that works, that is a bug in the rule and one that reaches every
consumer of the package - please
[report it](https://github.com/StackExchange/StackExchange.Redis/issues/new) with the code as written.
[report it](https://github.com/seredis/StackExchange.Redis/issues/new) with the code as written.

See also [Transactions](../Transactions) and [SER306](SER306).
2 changes: 1 addition & 1 deletion docs/rules/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ whatever each rule's own page lists.
These are heuristics, and the list above is where the effort has gone - but it is meant to make a false positive
rare, not impossible. If one of these rules flags something it should not have, that is a bug in the rule rather
than something to work around: please
[report it](https://github.com/StackExchange/StackExchange.Redis/issues/new) with the transaction as written.
[report it](https://github.com/seredis/StackExchange.Redis/issues/new) with the transaction as written.

Four rules are not in this family, because they are not suggesting an improvement to working code: `SER350`
reports a build problem, and [SER305](SER305)/[SER306](SER306)/[SER307](../SyncOverAsync) report code that does
Expand Down
2 changes: 1 addition & 1 deletion notes/lag-aware/findings.md
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ wrong twice over**: Redis ships a fault injection service for exactly this, *and
test tier built on it.*

**`tests/StackExchange.Redis.FaultInjector.Tests`** exists on `marc/maint-optin-server`, open as
**[#3191](https://github.com/StackExchange/StackExchange.Redis/pull/3191)** (107 files, +13,160,
**[#3191](https://github.com/seredis/StackExchange.Redis/pull/3191)** (107 files, +13,160,
unmerged at the time of writing). Per its README it drives *"a real Redis Enterprise deployment
through the fault injector, and watch[es] how SE.Redis reacts … the tier that can observe what no
in-process fake can: real DNS, real TLS identity, real timing."* Gating is
Expand Down
2 changes: 1 addition & 1 deletion notes/lag-aware/plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ See [`api-sketch.md`](api-sketch.md).
`tests/StackExchange.Redis.FaultInjector.Tests` is present here now. The rest of this section records
why the wait was worth it.

[#3191](https://github.com/StackExchange/StackExchange.Redis/pull/3191) ("Server-native maintenance
[#3191](https://github.com/seredis/StackExchange.Redis/pull/3191) ("Server-native maintenance
notifications") is open, 107 files, +13,160. It carries
`tests/StackExchange.Redis.FaultInjector.Tests`, and with it the three things this work would
otherwise have to build from scratch:
Expand Down
2 changes: 1 addition & 1 deletion src/StackExchange.Redis/ConnectionMultiplexer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1875,7 +1875,7 @@ internal async Task<bool> ReconfigureAsync(bool first, bool reconfigureAll, ILog
ValueStopwatch? watch = null;

int iterCount = first ? 2 : 1;
// This is fix for https://github.com/StackExchange/StackExchange.Redis/issues/300
// This is fix for https://github.com/seredis/StackExchange.Redis/issues/300
// auto discoverability of cluster nodes is made synchronous.
// We try to connect to endpoints specified inside the user provided configuration
// and when we encounter an endpoint to which we are able to successfully connect,
Expand Down
2 changes: 1 addition & 1 deletion src/StackExchange.Redis/FrameworkShims.IsExternalInit.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System.ComponentModel;

#if NET5_0_OR_GREATER
// context: https://github.com/StackExchange/StackExchange.Redis/issues/2619
// context: https://github.com/seredis/StackExchange.Redis/issues/2619
[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Runtime.CompilerServices.IsExternalInit))]
#else

Expand Down
2 changes: 1 addition & 1 deletion src/StackExchange.Redis/PhysicalConnection.Read.cs
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ private void OnMessage(
in RedisChannel messageChannel,
in RespReader reader)
{
// note: this could be multi-message: https://github.com/StackExchange/StackExchange.Redis/issues/2507
// note: this could be multi-message: https://github.com/seredis/StackExchange.Redis/issues/2507
_readStatus = ReadStatus.InvokePubSub;
switch (reader.Prefix)
{
Expand Down
4 changes: 2 additions & 2 deletions src/StackExchange.Redis/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
StackExchange.Redis is a high-performance RESP (Redis, etc) client for .NET, available under the MIT license.

- Release notes: [https://github.com/StackExchange/StackExchange.Redis/releases](https://github.com/StackExchange/StackExchange.Redis/releases) (3.0 onwards; [earlier](https://seredis.dev/ReleaseNotes))
- Release notes: [https://github.com/seredis/StackExchange.Redis/releases](https://github.com/seredis/StackExchange.Redis/releases) (3.0 onwards; [earlier](https://seredis.dev/ReleaseNotes))
- NuGet package: [https://www.nuget.org/packages/StackExchange.Redis/](https://www.nuget.org/packages/StackExchange.Redis/)
- General docs: [https://seredis.dev/](https://seredis.dev/)
- Code: [https://github.com/StackExchange/StackExchange.Redis/](https://github.com/StackExchange/StackExchange.Redis/)
- Code: [https://github.com/seredis/StackExchange.Redis/](https://github.com/seredis/StackExchange.Redis/)
2 changes: 1 addition & 1 deletion src/StackExchange.Redis/ResultProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1362,7 +1362,7 @@ protected override bool SetResultCore(PhysicalConnection connection, Message mes
var bridge = connection.BridgeCouldBeNull;
var config = Parse(connection, nodes);

// re multi-db: https://github.com/StackExchange/StackExchange.Redis/issues/2642
// re multi-db: https://github.com/seredis/StackExchange.Redis/issues/2642
if (bridge != null && !connection.MultiDatabasesOverride)
{
bridge.ServerEndPoint.ServerType = ServerType.Cluster;
Expand Down
2 changes: 1 addition & 1 deletion src/StackExchange.Redis/SocketManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ internal static bool TryEnableTcpKeepAlive(Socket socket, EndPoint endPoint)
{
#if !NET10_0_OR_GREATER
// Prior to .NET 10, enabling TCP keep-alive on host-based endpoints fails outside of Windows.
// see https://github.com/StackExchange/StackExchange.Redis/issues/3086
// see https://github.com/seredis/StackExchange.Redis/issues/3086
case DnsEndPoint when !RuntimeInformation.IsOSPlatform(OSPlatform.Windows): return false;
#endif
case DnsEndPoint:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace StackExchange.Redis.Tests;

// context: https://github.com/StackExchange/StackExchange.Redis/pull/3043
// context: https://github.com/seredis/StackExchange.Redis/pull/3043
public class ClusterHandshakeNodesUnitTests(ITestOutputHelper log)
{
[Fact]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace StackExchange.Redis.Tests;

/// <summary>
/// Covers the commands whose retry category depends on their *arguments* rather than just the command name
/// (see https://github.com/StackExchange/StackExchange.Redis/issues/3148). These call the message factories
/// (see https://github.com/seredis/StackExchange.Redis/issues/3148). These call the message factories
/// directly against the in-process server, so nothing here needs a real Redis.
/// </summary>
public class CommandRetryCategoryUnitTests(ITestOutputHelper log)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace StackExchange.Redis.Tests.MultiGroupTests;

/// <summary>
/// What a group does when no member can serve: see
/// <see href="https://github.com/StackExchange/StackExchange.Redis/issues/3223"/>.
/// <see href="https://github.com/seredis/StackExchange.Redis/issues/3223"/>.
/// </summary>
/// <remarks>
/// A group is an <see cref="IConnectionMultiplexer"/>, so it has to fail the way one does. Reporting a
Expand Down
2 changes: 1 addition & 1 deletion tests/StackExchange.Redis.Tests/ScanTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ public async Task HashScanNoValuesLarge(int pageSize)
}

/// <summary>
/// See <see href="https://github.com/StackExchange/StackExchange.Redis/issues/729"/>.
/// See <see href="https://github.com/seredis/StackExchange.Redis/issues/729"/>.
/// </summary>
[Fact]
public async Task HashScanThresholds()
Expand Down
2 changes: 1 addition & 1 deletion tests/StackExchange.Redis.Tests/ValkeyUnitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public async Task IdentifyValkeyCluster(ServerType type)

private sealed class InProcessValkeyLikeServer(ITestOutputHelper log) : InProcessTestServer(log)
{
// see https://github.com/StackExchange/StackExchange.Redis/pull/3050
// see https://github.com/seredis/StackExchange.Redis/pull/3050
protected override string ServerModeKey => "server_mode";

// Valkey reports its own version as HELLO "version" (see #3278); the name match is case-insensitive
Expand Down
Loading