diff --git a/Directory.Build.props b/Directory.Build.props
index 7d2e9c6c5..e7dbb7279 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -10,7 +10,8 @@
true
$(MSBuildThisFileDirectory)Shared.ruleset
NETSDK1069
- $(NoWarn);NU5105;NU1507;SER001;SER002;SER003;SER004;SER005;SER006
+
+ $(NoWarn);NU5105;NU1507;SER001;SER004;SER005
https://stackexchange.github.io/StackExchange.Redis/ReleaseNotes
https://stackexchange.github.io/StackExchange.Redis/
MIT
diff --git a/src/RESPite/Shared/Experiments.cs b/src/RESPite/Shared/Experiments.cs
index 304b1f624..d37e451e5 100644
--- a/src/RESPite/Shared/Experiments.cs
+++ b/src/RESPite/Shared/Experiments.cs
@@ -8,12 +8,16 @@ internal static class Experiments
// note: {0} is substituted with the DiagnosticId by the analyzer, e.g. .../exp/SER002
public const string UrlFormat = "https://stackexchange.github.io/StackExchange.Redis/exp/{0}";
+ // Retired experiments: these server features are now stable and no longer gated.
+ // The DiagnosticIds remain reserved (do NOT reuse them) so old callers' suppressions
+ // and the /docs/exp pages stay meaningful:
+ // SER002 = Server_8_4 (Redis 8.4 features)
+ // SER003 = Server_8_6 (Redis 8.6 features)
+ // SER006 = Server_8_8 (Redis 8.8 features)
+
// ReSharper disable InconsistentNaming
- public const string Server_8_4 = "SER002";
- public const string Server_8_6 = "SER003";
public const string Respite = "SER004";
public const string UnitTesting = "SER005";
- public const string Server_8_8 = "SER006";
// ReSharper restore InconsistentNaming
diff --git a/src/StackExchange.Redis/APITypes/RedisArrayEntry.cs b/src/StackExchange.Redis/APITypes/RedisArrayEntry.cs
index 8f07f69f6..0f54d8c56 100644
--- a/src/StackExchange.Redis/APITypes/RedisArrayEntry.cs
+++ b/src/StackExchange.Redis/APITypes/RedisArrayEntry.cs
@@ -10,7 +10,6 @@ namespace StackExchange.Redis;
///
/// The array index.
/// The value at this index.
-[Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public readonly struct RedisArrayEntry(RedisArrayIndex index, RedisValue value) : IEquatable
{
private readonly RedisArrayIndex _index = index;
diff --git a/src/StackExchange.Redis/APITypes/RedisArrayIndex.cs b/src/StackExchange.Redis/APITypes/RedisArrayIndex.cs
index a024ff47f..62e6df7b9 100644
--- a/src/StackExchange.Redis/APITypes/RedisArrayIndex.cs
+++ b/src/StackExchange.Redis/APITypes/RedisArrayIndex.cs
@@ -9,7 +9,6 @@ namespace StackExchange.Redis;
/// but wrapped for convenience from languages that do not work well with unsigned values.
///
/// The array index.
-[Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
[method: CLSCompliant(false)]
public readonly struct RedisArrayIndex(ulong value) : IEquatable
{
diff --git a/src/StackExchange.Redis/APITypes/RedisArrayRange.cs b/src/StackExchange.Redis/APITypes/RedisArrayRange.cs
index 307b30c71..15d88fa9a 100644
--- a/src/StackExchange.Redis/APITypes/RedisArrayRange.cs
+++ b/src/StackExchange.Redis/APITypes/RedisArrayRange.cs
@@ -9,7 +9,6 @@ namespace StackExchange.Redis;
///
/// The start index.
/// The end index.
-[Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public readonly struct RedisArrayRange(RedisArrayIndex start, RedisArrayIndex end) : IEquatable
{
private readonly RedisArrayIndex _start = start;
diff --git a/src/StackExchange.Redis/APITypes/StreamInfo.cs b/src/StackExchange.Redis/APITypes/StreamInfo.cs
index 1de0526ec..b30ca8694 100644
--- a/src/StackExchange.Redis/APITypes/StreamInfo.cs
+++ b/src/StackExchange.Redis/APITypes/StreamInfo.cs
@@ -105,7 +105,6 @@ internal StreamInfo(
///
public long IdmpDuration
{
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
get;
}
@@ -114,7 +113,6 @@ public long IdmpDuration
///
public long IdmpMaxSize
{
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
get;
}
@@ -123,7 +121,6 @@ public long IdmpMaxSize
///
public long PidsTracked
{
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
get;
}
@@ -133,7 +130,6 @@ public long PidsTracked
///
public long IidsTracked
{
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
get;
}
@@ -143,7 +139,6 @@ public long IidsTracked
///
public long IidsAdded
{
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
get;
}
@@ -153,7 +148,6 @@ public long IidsAdded
///
public long IidsDuplicates
{
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
get;
}
}
diff --git a/src/StackExchange.Redis/ArrayGrepRequest.cs b/src/StackExchange.Redis/ArrayGrepRequest.cs
index bc691053f..bf9e34f8f 100644
--- a/src/StackExchange.Redis/ArrayGrepRequest.cs
+++ b/src/StackExchange.Redis/ArrayGrepRequest.cs
@@ -9,7 +9,6 @@ namespace StackExchange.Redis;
///
/// Describes an array grep operation.
///
-[Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public class ArrayGrepRequest
{
[Flags]
@@ -249,7 +248,6 @@ internal Message CreateMessage(int db, RedisKey key, CommandFlags flags)
///
/// Describes a predicate used by an array grep operation.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public abstract class Predicate
{
internal virtual int ArgCount => 2;
diff --git a/src/StackExchange.Redis/ArrayInfo.cs b/src/StackExchange.Redis/ArrayInfo.cs
index 84e9c058e..b74eef636 100644
--- a/src/StackExchange.Redis/ArrayInfo.cs
+++ b/src/StackExchange.Redis/ArrayInfo.cs
@@ -8,7 +8,6 @@ namespace StackExchange.Redis;
///
/// Contains metadata information about an array returned by the ARINFO command.
///
-[Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public readonly struct ArrayInfo
{
private readonly Dictionary? otherValues;
diff --git a/src/StackExchange.Redis/Enums/Aggregate.cs b/src/StackExchange.Redis/Enums/Aggregate.cs
index 3e2aefc14..8926b3915 100644
--- a/src/StackExchange.Redis/Enums/Aggregate.cs
+++ b/src/StackExchange.Redis/Enums/Aggregate.cs
@@ -26,7 +26,6 @@ public enum Aggregate
///
/// The number of combined element scores is used.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Count,
}
}
diff --git a/src/StackExchange.Redis/Enums/ArrayOperation.cs b/src/StackExchange.Redis/Enums/ArrayOperation.cs
index 63a561bc3..b8cd7daa1 100644
--- a/src/StackExchange.Redis/Enums/ArrayOperation.cs
+++ b/src/StackExchange.Redis/Enums/ArrayOperation.cs
@@ -6,7 +6,6 @@ namespace StackExchange.Redis;
///
/// Describes an array aggregation operation.
///
-[Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public enum ArrayOperation
{
///
diff --git a/src/StackExchange.Redis/Enums/IncrementOptions.cs b/src/StackExchange.Redis/Enums/IncrementOptions.cs
index 4f19d380d..105daa7f2 100644
--- a/src/StackExchange.Redis/Enums/IncrementOptions.cs
+++ b/src/StackExchange.Redis/Enums/IncrementOptions.cs
@@ -7,7 +7,6 @@ namespace StackExchange.Redis;
///
/// Describes options for increment operations.
///
-[Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
[Flags]
public enum IncrementOptions
{
diff --git a/src/StackExchange.Redis/Enums/RedisType.cs b/src/StackExchange.Redis/Enums/RedisType.cs
index 6117d7c2e..43efcf86b 100644
--- a/src/StackExchange.Redis/Enums/RedisType.cs
+++ b/src/StackExchange.Redis/Enums/RedisType.cs
@@ -87,7 +87,6 @@ public enum RedisType
///
/// Redis Arrays are sparse arrays of arbitrary values with a notional write head.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
[AsciiHash("array")]
Array,
}
diff --git a/src/StackExchange.Redis/Enums/StreamNackMode.cs b/src/StackExchange.Redis/Enums/StreamNackMode.cs
index 68a8530aa..9ca3255af 100644
--- a/src/StackExchange.Redis/Enums/StreamNackMode.cs
+++ b/src/StackExchange.Redis/Enums/StreamNackMode.cs
@@ -6,7 +6,6 @@ namespace StackExchange.Redis;
///
/// Determines how a stream message is negatively acknowledged back to the consumer group.
///
-[Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public enum StreamNackMode
{
///
diff --git a/src/StackExchange.Redis/HotKeys.cs b/src/StackExchange.Redis/HotKeys.cs
index c3d71fe17..4fcfac032 100644
--- a/src/StackExchange.Redis/HotKeys.cs
+++ b/src/StackExchange.Redis/HotKeys.cs
@@ -16,7 +16,6 @@ public partial interface IServer
/// Profiling frequency; effectively: measure every Nth command.
/// The key-slots to record during this capture (defaults to "all").
/// The command flags to use.
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
void HotKeysStart(
HotKeysMetrics metrics = (HotKeysMetrics)~0, // everything by default
long count = 0,
@@ -34,7 +33,6 @@ void HotKeysStart(
/// Profiling frequency; effectively: measure every Nth command.
/// The key-slots to record during this capture (defaults to "all" / "all on this node").
/// The command flags to use.
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
Task HotKeysStartAsync(
HotKeysMetrics metrics = (HotKeysMetrics)~0, // everything by default
long count = 0,
@@ -47,28 +45,24 @@ Task HotKeysStartAsync(
/// Stop the current HOTKEYS capture, if any.
///
/// The command flags to use.
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
bool HotKeysStop(CommandFlags flags = CommandFlags.None);
///
/// Stop the current HOTKEYS capture, if any.
///
/// The command flags to use.
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
Task HotKeysStopAsync(CommandFlags flags = CommandFlags.None);
///
/// Discard the last HOTKEYS capture data, if any.
///
/// The command flags to use.
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
void HotKeysReset(CommandFlags flags = CommandFlags.None);
///
/// Discard the last HOTKEYS capture data, if any.
///
/// The command flags to use.
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
Task HotKeysResetAsync(CommandFlags flags = CommandFlags.None);
///
@@ -76,7 +70,6 @@ Task HotKeysStartAsync(
///
/// The command flags to use.
/// The data captured during HOTKEYS profiling.
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
HotKeysResult? HotKeysGet(CommandFlags flags = CommandFlags.None);
///
@@ -84,7 +77,6 @@ Task HotKeysStartAsync(
///
/// The command flags to use.
/// The data captured during HOTKEYS profiling.
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
Task HotKeysGetAsync(CommandFlags flags = CommandFlags.None);
}
@@ -92,7 +84,6 @@ Task HotKeysStartAsync(
/// Metrics to record during HOTKEYS profiling.
///
[Flags]
-[Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
public enum HotKeysMetrics
{
///
@@ -114,7 +105,6 @@ public enum HotKeysMetrics
///
/// Captured data from HOTKEYS profiling.
///
-[Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
public sealed partial class HotKeysResult
{
// Note: names are intentionally chosen to align reasonably well with the Redis command output; some
diff --git a/src/StackExchange.Redis/Increx.StringIncrementResult.cs b/src/StackExchange.Redis/Increx.StringIncrementResult.cs
index bba2d9017..648e0bda6 100644
--- a/src/StackExchange.Redis/Increx.StringIncrementResult.cs
+++ b/src/StackExchange.Redis/Increx.StringIncrementResult.cs
@@ -7,7 +7,6 @@ namespace StackExchange.Redis;
/// Represents the result of an increment operation including the resulting value and the increment actually applied.
///
/// The numeric type represented by the result.
-[Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public readonly struct StringIncrementResult(T value, T appliedIncrement)
{
///
diff --git a/src/StackExchange.Redis/Interfaces/IDatabase.Arrays.cs b/src/StackExchange.Redis/Interfaces/IDatabase.Arrays.cs
index 4e8151414..ca36239d4 100644
--- a/src/StackExchange.Redis/Interfaces/IDatabase.Arrays.cs
+++ b/src/StackExchange.Redis/Interfaces/IDatabase.Arrays.cs
@@ -10,79 +10,66 @@ public partial interface IDatabase
///
/// Sets the value at the specified array index.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
bool ArraySet(RedisKey key, RedisArrayIndex index, RedisValue value, CommandFlags flags = CommandFlags.None);
///
/// Sets a contiguous range of array values starting at the specified index.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
int ArraySet(RedisKey key, RedisArrayIndex index, RedisValue[] values, CommandFlags flags = CommandFlags.None);
///
/// Sets values at multiple array indices.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
int ArraySet(RedisKey key, RedisArrayEntry[] values, CommandFlags flags = CommandFlags.None);
///
/// Gets the value at the specified array index.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisValue ArrayGet(RedisKey key, RedisArrayIndex index, CommandFlags flags = CommandFlags.None);
///
/// Gets the values at the specified array indices.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisValue[] ArrayGet(RedisKey key, RedisArrayIndex[] indices, CommandFlags flags = CommandFlags.None);
///
/// Gets values in the specified array index range.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisValue[] ArrayGetRange(RedisKey key, RedisArrayIndex start, RedisArrayIndex end, CommandFlags flags = CommandFlags.None);
///
/// Gets the notional length of the array.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayIndex ArrayLength(RedisKey key, CommandFlags flags = CommandFlags.None);
///
/// Gets the number of array cells that have values.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayIndex ArrayCount(RedisKey key, CommandFlags flags = CommandFlags.None);
///
/// Deletes the value at the specified array index.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
bool ArrayDelete(RedisKey key, RedisArrayIndex index, CommandFlags flags = CommandFlags.None);
///
/// Deletes values at the specified array indices.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
int ArrayDelete(RedisKey key, RedisArrayIndex[] indices, CommandFlags flags = CommandFlags.None);
///
/// Deletes values in the specified array index range.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayIndex ArrayDeleteRange(RedisKey key, RedisArrayIndex start, RedisArrayIndex end, CommandFlags flags = CommandFlags.None);
///
/// Deletes values in the specified array index ranges.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayIndex ArrayDeleteRange(RedisKey key, RedisArrayRange[] ranges, CommandFlags flags = CommandFlags.None);
///
/// Gets the non-empty values in the specified array index range.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayEntry[] ArrayScan(RedisKey key, RedisArrayIndex start, RedisArrayIndex end, int limit = 0, CommandFlags flags = CommandFlags.None);
///
@@ -92,61 +79,51 @@ public partial interface IDatabase
/// When is , returned entries contain only indices.
/// When is , returned entries contain indices and values.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayEntry[] ArrayGrep(RedisKey key, ArrayGrepRequest request, CommandFlags flags = CommandFlags.None);
///
/// Performs an operation over the specified array range.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisValue ArrayOperation(RedisKey key, RedisArrayIndex start, RedisArrayIndex end, ArrayOperation operation, RedisValue operand = default, CommandFlags flags = CommandFlags.None);
///
/// Adds a value to a ring-buffer array.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayIndex ArrayRing(RedisKey key, RedisArrayIndex maxLength, RedisValue value, CommandFlags flags = CommandFlags.None);
///
/// Adds values to a ring-buffer array.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayIndex ArrayRing(RedisKey key, RedisArrayIndex maxLength, RedisValue[] values, CommandFlags flags = CommandFlags.None);
///
/// Gets the current array write-head.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayIndex? ArrayNext(RedisKey key, CommandFlags flags = CommandFlags.None);
///
/// Inserts a value at the current array write-head.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayIndex ArrayInsert(RedisKey key, RedisValue value, CommandFlags flags = CommandFlags.None);
///
/// Inserts values at the current array write-head.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisArrayIndex ArrayInsert(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None);
///
/// Moves the array write-head to the specified index.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
bool ArraySeek(RedisKey key, RedisArrayIndex index, CommandFlags flags = CommandFlags.None);
///
/// Gets the previous array items.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
RedisValue[] ArrayLastItems(RedisKey key, int count, bool reverse = false, CommandFlags flags = CommandFlags.None);
///
/// Gets array metadata.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
ArrayInfo ArrayInfo(RedisKey key, bool full = false, CommandFlags flags = CommandFlags.None);
}
diff --git a/src/StackExchange.Redis/Interfaces/IDatabase.cs b/src/StackExchange.Redis/Interfaces/IDatabase.cs
index c0761b9a7..e5576f3b2 100644
--- a/src/StackExchange.Redis/Interfaces/IDatabase.cs
+++ b/src/StackExchange.Redis/Interfaces/IDatabase.cs
@@ -2643,7 +2643,6 @@ IEnumerable SortedSetScan(
/// The flags to use for this operation.
/// Returns the number of messages successfully NACKed as a resp integer, regardless of mode (SILENT, FAIL, or FATAL) or options (RETRYCOUNT, FORCE) specified.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
long StreamNegativeAcknowledge(RedisKey key, RedisValue groupName, StreamNackMode mode, RedisValue messageId, CommandFlags flags = CommandFlags.None);
///
@@ -2657,7 +2656,6 @@ IEnumerable SortedSetScan(
/// The flags to use for this operation.
/// Returns the number of messages successfully NACKed as a resp integer, regardless of mode (SILENT, FAIL, or FATAL) or options (RETRYCOUNT, FORCE) specified.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
long StreamNegativeAcknowledge(RedisKey key, RedisValue groupName, StreamNackMode mode, RedisValue[] messageIds, CommandFlags flags = CommandFlags.None);
///
@@ -2728,7 +2726,6 @@ IEnumerable SortedSetScan(
/// The flags to use for this operation.
/// The ID of the newly created message.
///
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
RedisValue StreamAdd(RedisKey key, RedisValue streamField, RedisValue streamValue, StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StreamTrimMode trimMode = StreamTrimMode.KeepReferences, CommandFlags flags = CommandFlags.None);
///
@@ -2765,7 +2762,6 @@ IEnumerable SortedSetScan(
/// The flags to use for this operation.
/// The ID of the newly created message.
///
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
RedisValue StreamAdd(RedisKey key, NameValueEntry[] streamPairs, StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StreamTrimMode trimMode = StreamTrimMode.KeepReferences, CommandFlags flags = CommandFlags.None);
#pragma warning restore RS0026
@@ -2775,7 +2771,6 @@ IEnumerable SortedSetScan(
/// The key of the stream.
/// The configuration to apply.
/// The flags to use for this operation.
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
void StreamConfigure(RedisKey key, StreamConfiguration configuration, CommandFlags flags = CommandFlags.None);
///
@@ -3297,7 +3292,6 @@ IEnumerable SortedSetScan(
/// The key of the string.
/// The flags to use for this operation.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
ValueCondition? StringDigest(RedisKey key, CommandFlags flags = CommandFlags.None);
///
@@ -3449,7 +3443,6 @@ IEnumerable SortedSetScan(
/// The flags to use for this operation.
/// The resulting value and the increment actually applied.
#pragma warning disable RS0026 // Public API with optional parameter(s) should have the most parameters amongst its public overloads
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
StringIncrementResult StringIncrement(RedisKey key, long value, Expiration expiry, long? lowerBound = null, long? upperBound = null, IncrementOptions options = IncrementOptions.None, CommandFlags flags = CommandFlags.None);
///
@@ -3463,7 +3456,6 @@ IEnumerable SortedSetScan(
/// The options to use for this operation.
/// The flags to use for this operation.
/// The resulting value and the increment actually applied.
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
StringIncrementResult StringIncrement(RedisKey key, double value, Expiration expiry, double? lowerBound = null, double? upperBound = null, IncrementOptions options = IncrementOptions.None, CommandFlags flags = CommandFlags.None);
#pragma warning restore RS0026
diff --git a/src/StackExchange.Redis/Interfaces/IDatabaseAsync.Arrays.cs b/src/StackExchange.Redis/Interfaces/IDatabaseAsync.Arrays.cs
index 6890388a7..9fd47913d 100644
--- a/src/StackExchange.Redis/Interfaces/IDatabaseAsync.Arrays.cs
+++ b/src/StackExchange.Redis/Interfaces/IDatabaseAsync.Arrays.cs
@@ -9,95 +9,72 @@ namespace StackExchange.Redis;
public partial interface IDatabaseAsync
{
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArraySetAsync(RedisKey key, RedisArrayIndex index, RedisValue value, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArraySetAsync(RedisKey key, RedisArrayIndex index, RedisValue[] values, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArraySetAsync(RedisKey key, RedisArrayEntry[] values, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayGetAsync(RedisKey key, RedisArrayIndex index, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayGetAsync(RedisKey key, RedisArrayIndex[] indices, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayGetRangeAsync(RedisKey key, RedisArrayIndex start, RedisArrayIndex end, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayLengthAsync(RedisKey key, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayCountAsync(RedisKey key, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayDeleteAsync(RedisKey key, RedisArrayIndex index, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayDeleteAsync(RedisKey key, RedisArrayIndex[] indices, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayDeleteRangeAsync(RedisKey key, RedisArrayIndex start, RedisArrayIndex end, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayDeleteRangeAsync(RedisKey key, RedisArrayRange[] ranges, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayScanAsync(RedisKey key, RedisArrayIndex start, RedisArrayIndex end, int limit = 0, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayGrepAsync(RedisKey key, ArrayGrepRequest request, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayOperationAsync(RedisKey key, RedisArrayIndex start, RedisArrayIndex end, ArrayOperation operation, RedisValue operand = default, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayRingAsync(RedisKey key, RedisArrayIndex maxLength, RedisValue value, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayRingAsync(RedisKey key, RedisArrayIndex maxLength, RedisValue[] values, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayNextAsync(RedisKey key, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayInsertAsync(RedisKey key, RedisValue value, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayInsertAsync(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArraySeekAsync(RedisKey key, RedisArrayIndex index, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayLastItemsAsync(RedisKey key, int count, bool reverse = false, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task ArrayInfoAsync(RedisKey key, bool full = false, CommandFlags flags = CommandFlags.None);
}
diff --git a/src/StackExchange.Redis/Interfaces/IDatabaseAsync.cs b/src/StackExchange.Redis/Interfaces/IDatabaseAsync.cs
index 40db55cfd..5b1de8f2e 100644
--- a/src/StackExchange.Redis/Interfaces/IDatabaseAsync.cs
+++ b/src/StackExchange.Redis/Interfaces/IDatabaseAsync.cs
@@ -650,11 +650,9 @@ IAsyncEnumerable SortedSetScanAsync(
#pragma warning restore RS0026
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task StreamNegativeAcknowledgeAsync(RedisKey key, RedisValue groupName, StreamNackMode mode, RedisValue messageId, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task StreamNegativeAcknowledgeAsync(RedisKey key, RedisValue groupName, StreamNackMode mode, RedisValue[] messageIds, CommandFlags flags = CommandFlags.None);
///
@@ -671,16 +669,13 @@ IAsyncEnumerable SortedSetScanAsync(
Task StreamAddAsync(RedisKey key, NameValueEntry[] streamPairs, RedisValue? messageId = null, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StreamTrimMode trimMode = StreamTrimMode.KeepReferences, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
Task StreamAddAsync(RedisKey key, RedisValue streamField, RedisValue streamValue, StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StreamTrimMode trimMode = StreamTrimMode.KeepReferences, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
Task StreamAddAsync(RedisKey key, NameValueEntry[] streamPairs, StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StreamTrimMode trimMode = StreamTrimMode.KeepReferences, CommandFlags flags = CommandFlags.None);
#pragma warning restore RS0026
///
- [Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
Task StreamConfigureAsync(RedisKey key, StreamConfiguration configuration, CommandFlags flags = CommandFlags.None);
///
@@ -805,7 +800,6 @@ IAsyncEnumerable SortedSetScanAsync(
Task StringDecrementAsync(RedisKey key, double value, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
Task StringDigestAsync(RedisKey key, CommandFlags flags = CommandFlags.None);
///
@@ -846,11 +840,9 @@ IAsyncEnumerable SortedSetScanAsync(
///
#pragma warning disable RS0026 // Public API with optional parameter(s) should have the most parameters amongst its public overloads
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task> StringIncrementAsync(RedisKey key, long value, Expiration expiry, long? lowerBound = null, long? upperBound = null, IncrementOptions options = IncrementOptions.None, CommandFlags flags = CommandFlags.None);
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
Task> StringIncrementAsync(RedisKey key, double value, Expiration expiry, double? lowerBound = null, double? upperBound = null, IncrementOptions options = IncrementOptions.None, CommandFlags flags = CommandFlags.None);
#pragma warning restore RS0026
diff --git a/src/StackExchange.Redis/KeyNotification.SubKeys.cs b/src/StackExchange.Redis/KeyNotification.SubKeys.cs
index a0825c21c..685268d69 100644
--- a/src/StackExchange.Redis/KeyNotification.SubKeys.cs
+++ b/src/StackExchange.Redis/KeyNotification.SubKeys.cs
@@ -16,7 +16,6 @@ public readonly ref partial struct KeyNotification
/// Gets all sub-keys in this notification. For notifications without sub-keys, returns an empty enumerable.
///
/// This method is available for SubKeySpace, SubKeyEvent, SubKeySpaceItem, and SubKeySpaceEvent notification types.
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public SubKeyEnumerable GetSubKeys()
{
return new SubKeyEnumerable(this);
@@ -25,7 +24,6 @@ public SubKeyEnumerable GetSubKeys()
///
/// Provides enumeration over sub-keys in a keyspace notification.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public readonly ref struct SubKeyEnumerable
{
private static readonly RedisValue[] Empty = [];
@@ -185,7 +183,6 @@ public List ToList()
///
/// Enumerator for sub-keys in a keyspace notification.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public ref struct SubKeyEnumerator
{
private readonly KeyNotificationKind _kind;
diff --git a/src/StackExchange.Redis/KeyNotification.cs b/src/StackExchange.Redis/KeyNotification.cs
index e52b8ead5..5550fe6e0 100644
--- a/src/StackExchange.Redis/KeyNotification.cs
+++ b/src/StackExchange.Redis/KeyNotification.cs
@@ -32,25 +32,21 @@ public enum KeyNotificationKind
///
/// Subkey keyspace notification: __subkeyspace@{db}__:{key} with payload containing event|subkey.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
SubKeySpace = 3,
///
/// Subkey keyevent notification: __subkeyevent@{db}__:{event} with payload containing key|subkey.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
SubKeyEvent = 4,
///
/// Subkey keyspaceitem notification: __subkeyspaceitem@{db}__:{key}\n{subkey} with payload containing the event.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
SubKeySpaceItem = 5,
///
/// Subkey keyspaceevent notification: __subkeyspaceevent@{db}__:{event}|{key} with payload containing the subkey.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
SubKeySpaceEvent = 6,
}
@@ -81,7 +77,6 @@ public readonly ref partial struct KeyNotification
/// Indicates whether this notification includes a sub-key (hash field).
///
/// This is true for SubKeySpace, SubKeyEvent, SubKeySpaceItem, and SubKeySpaceEvent notifications (Redis 8.8+).
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public bool HasSubKey
{
get => _kind is KeyNotificationKind.SubKeySpace
diff --git a/src/StackExchange.Redis/KeyNotificationType.cs b/src/StackExchange.Redis/KeyNotificationType.cs
index 3a8bc1a80..0d6bb6362 100644
--- a/src/StackExchange.Redis/KeyNotificationType.cs
+++ b/src/StackExchange.Redis/KeyNotificationType.cs
@@ -115,13 +115,10 @@ public enum KeyNotificationType
[AsciiHash("hexpire")]
HExpire = 50,
[AsciiHash("ardel")]
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
ArDel = 51,
[AsciiHash("ardelrange")]
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
ArDelRange = 52,
[AsciiHash("arset")]
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
ArSet = 53,
// side-effect notifications
diff --git a/src/StackExchange.Redis/PublicAPI/PublicAPI.Shipped.txt b/src/StackExchange.Redis/PublicAPI/PublicAPI.Shipped.txt
index 7e8381c6e..0fb42182d 100644
--- a/src/StackExchange.Redis/PublicAPI/PublicAPI.Shipped.txt
+++ b/src/StackExchange.Redis/PublicAPI/PublicAPI.Shipped.txt
@@ -61,7 +61,7 @@ override StackExchange.Redis.SortedSetEntry.Equals(object? obj) -> bool
override StackExchange.Redis.SortedSetEntry.GetHashCode() -> int
override StackExchange.Redis.SortedSetEntry.ToString() -> string!
StackExchange.Redis.Aggregate
-[SER006]StackExchange.Redis.Aggregate.Count = 3 -> StackExchange.Redis.Aggregate
+StackExchange.Redis.Aggregate.Count = 3 -> StackExchange.Redis.Aggregate
StackExchange.Redis.Aggregate.Max = 2 -> StackExchange.Redis.Aggregate
StackExchange.Redis.Aggregate.Min = 1 -> StackExchange.Redis.Aggregate
StackExchange.Redis.Aggregate.Sum = 0 -> StackExchange.Redis.Aggregate
@@ -483,14 +483,14 @@ StackExchange.Redis.GeoUnit.Feet = 3 -> StackExchange.Redis.GeoUnit
StackExchange.Redis.GeoUnit.Kilometers = 1 -> StackExchange.Redis.GeoUnit
StackExchange.Redis.GeoUnit.Meters = 0 -> StackExchange.Redis.GeoUnit
StackExchange.Redis.GeoUnit.Miles = 2 -> StackExchange.Redis.GeoUnit
-[SER006]StackExchange.Redis.IncrementOptions
-[SER006]StackExchange.Redis.IncrementOptions.None = 0 -> StackExchange.Redis.IncrementOptions
-[SER006]StackExchange.Redis.IncrementOptions.Saturate = 1 -> StackExchange.Redis.IncrementOptions
-[SER006]StackExchange.Redis.StringIncrementResult
-[SER006]StackExchange.Redis.StringIncrementResult.AppliedIncrement.get -> T
-[SER006]StackExchange.Redis.StringIncrementResult.StringIncrementResult() -> void
-[SER006]StackExchange.Redis.StringIncrementResult.StringIncrementResult(T value, T appliedIncrement) -> void
-[SER006]StackExchange.Redis.StringIncrementResult.Value.get -> T
+StackExchange.Redis.IncrementOptions
+StackExchange.Redis.IncrementOptions.None = 0 -> StackExchange.Redis.IncrementOptions
+StackExchange.Redis.IncrementOptions.Saturate = 1 -> StackExchange.Redis.IncrementOptions
+StackExchange.Redis.StringIncrementResult
+StackExchange.Redis.StringIncrementResult.AppliedIncrement.get -> T
+StackExchange.Redis.StringIncrementResult.StringIncrementResult() -> void
+StackExchange.Redis.StringIncrementResult.StringIncrementResult(T value, T appliedIncrement) -> void
+StackExchange.Redis.StringIncrementResult.Value.get -> T
StackExchange.Redis.HashEntry
StackExchange.Redis.HashEntry.Equals(StackExchange.Redis.HashEntry other) -> bool
StackExchange.Redis.HashEntry.HashEntry() -> void
@@ -787,9 +787,9 @@ StackExchange.Redis.IDatabase.StringGetSet(StackExchange.Redis.RedisKey key, Sta
StackExchange.Redis.IDatabase.StringGetSetExpiry(StackExchange.Redis.RedisKey key, System.TimeSpan? expiry, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
StackExchange.Redis.IDatabase.StringGetSetExpiry(StackExchange.Redis.RedisKey key, System.DateTime expiry, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
StackExchange.Redis.IDatabase.StringGetWithExpiry(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValueWithExpiry
-[SER006]StackExchange.Redis.IDatabase.StringIncrement(StackExchange.Redis.RedisKey key, double value, StackExchange.Redis.Expiration expiry, double? lowerBound = null, double? upperBound = null, StackExchange.Redis.IncrementOptions options = StackExchange.Redis.IncrementOptions.None, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.StringIncrementResult
+StackExchange.Redis.IDatabase.StringIncrement(StackExchange.Redis.RedisKey key, double value, StackExchange.Redis.Expiration expiry, double? lowerBound = null, double? upperBound = null, StackExchange.Redis.IncrementOptions options = StackExchange.Redis.IncrementOptions.None, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.StringIncrementResult
StackExchange.Redis.IDatabase.StringIncrement(StackExchange.Redis.RedisKey key, double value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> double
-[SER006]StackExchange.Redis.IDatabase.StringIncrement(StackExchange.Redis.RedisKey key, long value, StackExchange.Redis.Expiration expiry, long? lowerBound = null, long? upperBound = null, StackExchange.Redis.IncrementOptions options = StackExchange.Redis.IncrementOptions.None, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.StringIncrementResult
+StackExchange.Redis.IDatabase.StringIncrement(StackExchange.Redis.RedisKey key, long value, StackExchange.Redis.Expiration expiry, long? lowerBound = null, long? upperBound = null, StackExchange.Redis.IncrementOptions options = StackExchange.Redis.IncrementOptions.None, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.StringIncrementResult
StackExchange.Redis.IDatabase.StringIncrement(StackExchange.Redis.RedisKey key, long value = 1, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> long
StackExchange.Redis.IDatabase.StringLength(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> long
StackExchange.Redis.IDatabase.StringLongestCommonSubsequence(StackExchange.Redis.RedisKey first, StackExchange.Redis.RedisKey second, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> string?
@@ -1033,9 +1033,9 @@ StackExchange.Redis.IDatabaseAsync.StringGetSetAsync(StackExchange.Redis.RedisKe
StackExchange.Redis.IDatabaseAsync.StringGetSetExpiryAsync(StackExchange.Redis.RedisKey key, System.TimeSpan? expiry, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
StackExchange.Redis.IDatabaseAsync.StringGetSetExpiryAsync(StackExchange.Redis.RedisKey key, System.DateTime expiry, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
StackExchange.Redis.IDatabaseAsync.StringGetWithExpiryAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.StringIncrementAsync(StackExchange.Redis.RedisKey key, double value, StackExchange.Redis.Expiration expiry, double? lowerBound = null, double? upperBound = null, StackExchange.Redis.IncrementOptions options = StackExchange.Redis.IncrementOptions.None, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task>!
+StackExchange.Redis.IDatabaseAsync.StringIncrementAsync(StackExchange.Redis.RedisKey key, double value, StackExchange.Redis.Expiration expiry, double? lowerBound = null, double? upperBound = null, StackExchange.Redis.IncrementOptions options = StackExchange.Redis.IncrementOptions.None, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task>!
StackExchange.Redis.IDatabaseAsync.StringIncrementAsync(StackExchange.Redis.RedisKey key, double value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.StringIncrementAsync(StackExchange.Redis.RedisKey key, long value, StackExchange.Redis.Expiration expiry, long? lowerBound = null, long? upperBound = null, StackExchange.Redis.IncrementOptions options = StackExchange.Redis.IncrementOptions.None, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task>!
+StackExchange.Redis.IDatabaseAsync.StringIncrementAsync(StackExchange.Redis.RedisKey key, long value, StackExchange.Redis.Expiration expiry, long? lowerBound = null, long? upperBound = null, StackExchange.Redis.IncrementOptions options = StackExchange.Redis.IncrementOptions.None, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task>!
StackExchange.Redis.IDatabaseAsync.StringIncrementAsync(StackExchange.Redis.RedisKey key, long value = 1, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
StackExchange.Redis.IDatabaseAsync.StringLengthAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
StackExchange.Redis.IDatabaseAsync.StringLongestCommonSubsequenceAsync(StackExchange.Redis.RedisKey first, StackExchange.Redis.RedisKey second, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
@@ -2114,17 +2114,17 @@ StackExchange.Redis.IDatabase.StringSet(StackExchange.Redis.RedisKey key, StackE
StackExchange.Redis.IDatabase.StringSet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue value, System.TimeSpan? expiry, bool keepTtl, StackExchange.Redis.When when = StackExchange.Redis.When.Always, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> bool
StackExchange.Redis.IDatabaseAsync.StringSetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue value, StackExchange.Redis.Expiration expiry = default(StackExchange.Redis.Expiration), StackExchange.Redis.ValueCondition when = default(StackExchange.Redis.ValueCondition), StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
StackExchange.Redis.IDatabaseAsync.StringSetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue value, System.TimeSpan? expiry, bool keepTtl, StackExchange.Redis.When when = StackExchange.Redis.When.Always, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER002]StackExchange.Redis.IDatabase.StringDigest(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.ValueCondition?
-[SER002]StackExchange.Redis.IDatabaseAsync.StringDigestAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER002]StackExchange.Redis.ValueCondition.AsDigest() -> StackExchange.Redis.ValueCondition
-[SER002]StackExchange.Redis.ValueCondition.Value.get -> StackExchange.Redis.RedisValue
-[SER002]static StackExchange.Redis.ValueCondition.CalculateDigest(System.ReadOnlySpan value) -> StackExchange.Redis.ValueCondition
-[SER002]static StackExchange.Redis.ValueCondition.DigestEqual(in StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ValueCondition
-[SER002]static StackExchange.Redis.ValueCondition.DigestNotEqual(in StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ValueCondition
-[SER002]static StackExchange.Redis.ValueCondition.Equal(in StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ValueCondition
-[SER002]static StackExchange.Redis.ValueCondition.NotEqual(in StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ValueCondition
-[SER002]static StackExchange.Redis.ValueCondition.ParseDigest(System.ReadOnlySpan digest) -> StackExchange.Redis.ValueCondition
-[SER002]static StackExchange.Redis.ValueCondition.ParseDigest(System.ReadOnlySpan digest) -> StackExchange.Redis.ValueCondition
+StackExchange.Redis.IDatabase.StringDigest(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.ValueCondition?
+StackExchange.Redis.IDatabaseAsync.StringDigestAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.ValueCondition.AsDigest() -> StackExchange.Redis.ValueCondition
+StackExchange.Redis.ValueCondition.Value.get -> StackExchange.Redis.RedisValue
+static StackExchange.Redis.ValueCondition.CalculateDigest(System.ReadOnlySpan value) -> StackExchange.Redis.ValueCondition
+static StackExchange.Redis.ValueCondition.DigestEqual(in StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ValueCondition
+static StackExchange.Redis.ValueCondition.DigestNotEqual(in StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ValueCondition
+static StackExchange.Redis.ValueCondition.Equal(in StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ValueCondition
+static StackExchange.Redis.ValueCondition.NotEqual(in StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ValueCondition
+static StackExchange.Redis.ValueCondition.ParseDigest(System.ReadOnlySpan digest) -> StackExchange.Redis.ValueCondition
+static StackExchange.Redis.ValueCondition.ParseDigest(System.ReadOnlySpan digest) -> StackExchange.Redis.ValueCondition
StackExchange.Redis.ChannelMessage.TryParseKeyNotification(System.ReadOnlySpan keyPrefix, out StackExchange.Redis.KeyNotification notification) -> bool
StackExchange.Redis.KeyNotification
StackExchange.Redis.KeyNotification.GetChannel() -> StackExchange.Redis.RedisChannel
@@ -2209,90 +2209,90 @@ StackExchange.Redis.KeyNotificationType.ZUnionStore = 45 -> StackExchange.Redis.
static StackExchange.Redis.RedisChannel.KeySpacePrefix(in StackExchange.Redis.RedisKey prefix, int? database = null) -> StackExchange.Redis.RedisChannel
static StackExchange.Redis.RedisChannel.KeySpacePrefix(System.ReadOnlySpan prefix, int? database = null) -> StackExchange.Redis.RedisChannel
static StackExchange.Redis.RedisChannel.KeySpaceSingleKey(in StackExchange.Redis.RedisKey key, int database) -> StackExchange.Redis.RedisChannel
-[SER003]StackExchange.Redis.HotKeysMetrics
-[SER003]StackExchange.Redis.HotKeysMetrics.Cpu = 1 -> StackExchange.Redis.HotKeysMetrics
-[SER003]StackExchange.Redis.HotKeysMetrics.Network = 2 -> StackExchange.Redis.HotKeysMetrics
-[SER003]StackExchange.Redis.HotKeysMetrics.None = 0 -> StackExchange.Redis.HotKeysMetrics
-[SER003]StackExchange.Redis.HotKeysResult
-[SER003]StackExchange.Redis.HotKeysResult.AllCommandsAllSlotsNetworkBytes.get -> long
-[SER003]StackExchange.Redis.HotKeysResult.AllCommandsAllSlotsTime.get -> System.TimeSpan
-[SER003]StackExchange.Redis.HotKeysResult.AllCommandsSelectedSlotsNetworkBytes.get -> long?
-[SER003]StackExchange.Redis.HotKeysResult.AllCommandsSelectedSlotsTime.get -> System.TimeSpan?
-[SER003]StackExchange.Redis.HotKeysResult.CollectionDuration.get -> System.TimeSpan
-[SER003]StackExchange.Redis.HotKeysResult.CollectionStartTime.get -> System.DateTime
-[SER003]StackExchange.Redis.HotKeysResult.CpuByKey.get -> System.ReadOnlySpan
-[SER003]StackExchange.Redis.HotKeysResult.IsSampled.get -> bool
-[SER003]StackExchange.Redis.HotKeysResult.IsSlotFiltered.get -> bool
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyBytes
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyBytes.Bytes.get -> long
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyBytes.Key.get -> StackExchange.Redis.RedisKey
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyBytes.MetricKeyBytes() -> void
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyBytes.MetricKeyBytes(in StackExchange.Redis.RedisKey key, long bytes) -> void
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyCpu
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyCpu.Duration.get -> System.TimeSpan
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyCpu.Key.get -> StackExchange.Redis.RedisKey
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyCpu.MetricKeyCpu() -> void
-[SER003]StackExchange.Redis.HotKeysResult.MetricKeyCpu.MetricKeyCpu(in StackExchange.Redis.RedisKey key, long durationMicroseconds) -> void
-[SER003]StackExchange.Redis.HotKeysResult.Metrics.get -> StackExchange.Redis.HotKeysMetrics
-[SER003]StackExchange.Redis.HotKeysResult.NetworkBytesByKey.get -> System.ReadOnlySpan
-[SER003]StackExchange.Redis.HotKeysResult.SampledCommandsSelectedSlotsNetworkBytes.get -> long?
-[SER003]StackExchange.Redis.HotKeysResult.SampledCommandsSelectedSlotsTime.get -> System.TimeSpan?
-[SER003]StackExchange.Redis.HotKeysResult.SampleRatio.get -> long
-[SER003]StackExchange.Redis.HotKeysResult.SelectedSlots.get -> System.ReadOnlySpan
-[SER003]StackExchange.Redis.HotKeysResult.TotalCpuTime.get -> System.TimeSpan?
-[SER003]StackExchange.Redis.HotKeysResult.TotalCpuTimeSystem.get -> System.TimeSpan?
-[SER003]StackExchange.Redis.HotKeysResult.TotalCpuTimeUser.get -> System.TimeSpan?
-[SER003]StackExchange.Redis.HotKeysResult.TotalNetworkBytes.get -> long?
-[SER003]StackExchange.Redis.HotKeysResult.TrackingActive.get -> bool
-[SER003]StackExchange.Redis.IServer.HotKeysGet(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.HotKeysResult?
-[SER003]StackExchange.Redis.IServer.HotKeysGetAsync(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER003]StackExchange.Redis.IServer.HotKeysReset(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> void
-[SER003]StackExchange.Redis.IServer.HotKeysResetAsync(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER003]StackExchange.Redis.IServer.HotKeysStart(StackExchange.Redis.HotKeysMetrics metrics = (StackExchange.Redis.HotKeysMetrics)-1, long count = 0, System.TimeSpan duration = default(System.TimeSpan), long sampleRatio = 1, int[]? slots = null, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> void
-[SER003]StackExchange.Redis.IServer.HotKeysStartAsync(StackExchange.Redis.HotKeysMetrics metrics = (StackExchange.Redis.HotKeysMetrics)-1, long count = 0, System.TimeSpan duration = default(System.TimeSpan), long sampleRatio = 1, int[]? slots = null, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER003]StackExchange.Redis.IServer.HotKeysStop(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> bool
-[SER003]StackExchange.Redis.IServer.HotKeysStopAsync(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER003]override StackExchange.Redis.HotKeysResult.MetricKeyBytes.Equals(object? obj) -> bool
-[SER003]override StackExchange.Redis.HotKeysResult.MetricKeyBytes.GetHashCode() -> int
-[SER003]override StackExchange.Redis.HotKeysResult.MetricKeyBytes.ToString() -> string!
-[SER003]override StackExchange.Redis.HotKeysResult.MetricKeyCpu.Equals(object? obj) -> bool
-[SER003]override StackExchange.Redis.HotKeysResult.MetricKeyCpu.GetHashCode() -> int
-[SER003]override StackExchange.Redis.HotKeysResult.MetricKeyCpu.ToString() -> string!
-[SER003]override StackExchange.Redis.StreamIdempotentId.Equals(object? obj) -> bool
-[SER003]override StackExchange.Redis.StreamIdempotentId.GetHashCode() -> int
-[SER003]override StackExchange.Redis.StreamIdempotentId.ToString() -> string!
-[SER003]StackExchange.Redis.IDatabase.StreamAdd(StackExchange.Redis.RedisKey key, StackExchange.Redis.NameValueEntry[]! streamPairs, StackExchange.Redis.StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StackExchange.Redis.StreamTrimMode trimMode = StackExchange.Redis.StreamTrimMode.KeepReferences, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
-[SER003]StackExchange.Redis.IDatabase.StreamAdd(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue streamField, StackExchange.Redis.RedisValue streamValue, StackExchange.Redis.StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StackExchange.Redis.StreamTrimMode trimMode = StackExchange.Redis.StreamTrimMode.KeepReferences, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
-[SER003]StackExchange.Redis.IDatabase.StreamConfigure(StackExchange.Redis.RedisKey key, StackExchange.Redis.StreamConfiguration! configuration, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> void
-[SER006]StackExchange.Redis.IDatabase.StreamNegativeAcknowledge(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue groupName, StackExchange.Redis.StreamNackMode mode, StackExchange.Redis.RedisValue messageId, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> long
-[SER006]StackExchange.Redis.IDatabase.StreamNegativeAcknowledge(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue groupName, StackExchange.Redis.StreamNackMode mode, StackExchange.Redis.RedisValue[]! messageIds, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> long
-[SER003]StackExchange.Redis.IDatabaseAsync.StreamAddAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.NameValueEntry[]! streamPairs, StackExchange.Redis.StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StackExchange.Redis.StreamTrimMode trimMode = StackExchange.Redis.StreamTrimMode.KeepReferences, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER003]StackExchange.Redis.IDatabaseAsync.StreamAddAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue streamField, StackExchange.Redis.RedisValue streamValue, StackExchange.Redis.StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StackExchange.Redis.StreamTrimMode trimMode = StackExchange.Redis.StreamTrimMode.KeepReferences, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER003]StackExchange.Redis.IDatabaseAsync.StreamConfigureAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.StreamConfiguration! configuration, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.StreamNegativeAcknowledgeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue groupName, StackExchange.Redis.StreamNackMode mode, StackExchange.Redis.RedisValue messageId, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.StreamNegativeAcknowledgeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue groupName, StackExchange.Redis.StreamNackMode mode, StackExchange.Redis.RedisValue[]! messageIds, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER003]StackExchange.Redis.StreamConfiguration
-[SER003]StackExchange.Redis.StreamConfiguration.IdmpDuration.get -> long?
-[SER003]StackExchange.Redis.StreamConfiguration.IdmpDuration.set -> void
-[SER003]StackExchange.Redis.StreamConfiguration.IdmpMaxSize.get -> long?
-[SER003]StackExchange.Redis.StreamConfiguration.IdmpMaxSize.set -> void
-[SER003]StackExchange.Redis.StreamConfiguration.StreamConfiguration() -> void
-[SER003]StackExchange.Redis.StreamIdempotentId
-[SER003]StackExchange.Redis.StreamIdempotentId.IdempotentId.get -> StackExchange.Redis.RedisValue
-[SER003]StackExchange.Redis.StreamIdempotentId.ProducerId.get -> StackExchange.Redis.RedisValue
-[SER003]StackExchange.Redis.StreamIdempotentId.StreamIdempotentId() -> void
-[SER003]StackExchange.Redis.StreamIdempotentId.StreamIdempotentId(StackExchange.Redis.RedisValue producerId) -> void
-[SER003]StackExchange.Redis.StreamIdempotentId.StreamIdempotentId(StackExchange.Redis.RedisValue producerId, StackExchange.Redis.RedisValue idempotentId) -> void
-[SER003]StackExchange.Redis.StreamInfo.IdmpDuration.get -> long
-[SER003]StackExchange.Redis.StreamInfo.IdmpMaxSize.get -> long
-[SER003]StackExchange.Redis.StreamInfo.IidsAdded.get -> long
-[SER003]StackExchange.Redis.StreamInfo.IidsDuplicates.get -> long
-[SER003]StackExchange.Redis.StreamInfo.IidsTracked.get -> long
-[SER003]StackExchange.Redis.StreamInfo.PidsTracked.get -> long
-[SER006]StackExchange.Redis.StreamNackMode
-[SER006]StackExchange.Redis.StreamNackMode.Fail = 1 -> StackExchange.Redis.StreamNackMode
-[SER006]StackExchange.Redis.StreamNackMode.Fatal = 2 -> StackExchange.Redis.StreamNackMode
-[SER006]StackExchange.Redis.StreamNackMode.Silent = 0 -> StackExchange.Redis.StreamNackMode
+StackExchange.Redis.HotKeysMetrics
+StackExchange.Redis.HotKeysMetrics.Cpu = 1 -> StackExchange.Redis.HotKeysMetrics
+StackExchange.Redis.HotKeysMetrics.Network = 2 -> StackExchange.Redis.HotKeysMetrics
+StackExchange.Redis.HotKeysMetrics.None = 0 -> StackExchange.Redis.HotKeysMetrics
+StackExchange.Redis.HotKeysResult
+StackExchange.Redis.HotKeysResult.AllCommandsAllSlotsNetworkBytes.get -> long
+StackExchange.Redis.HotKeysResult.AllCommandsAllSlotsTime.get -> System.TimeSpan
+StackExchange.Redis.HotKeysResult.AllCommandsSelectedSlotsNetworkBytes.get -> long?
+StackExchange.Redis.HotKeysResult.AllCommandsSelectedSlotsTime.get -> System.TimeSpan?
+StackExchange.Redis.HotKeysResult.CollectionDuration.get -> System.TimeSpan
+StackExchange.Redis.HotKeysResult.CollectionStartTime.get -> System.DateTime
+StackExchange.Redis.HotKeysResult.CpuByKey.get -> System.ReadOnlySpan
+StackExchange.Redis.HotKeysResult.IsSampled.get -> bool
+StackExchange.Redis.HotKeysResult.IsSlotFiltered.get -> bool
+StackExchange.Redis.HotKeysResult.MetricKeyBytes
+StackExchange.Redis.HotKeysResult.MetricKeyBytes.Bytes.get -> long
+StackExchange.Redis.HotKeysResult.MetricKeyBytes.Key.get -> StackExchange.Redis.RedisKey
+StackExchange.Redis.HotKeysResult.MetricKeyBytes.MetricKeyBytes() -> void
+StackExchange.Redis.HotKeysResult.MetricKeyBytes.MetricKeyBytes(in StackExchange.Redis.RedisKey key, long bytes) -> void
+StackExchange.Redis.HotKeysResult.MetricKeyCpu
+StackExchange.Redis.HotKeysResult.MetricKeyCpu.Duration.get -> System.TimeSpan
+StackExchange.Redis.HotKeysResult.MetricKeyCpu.Key.get -> StackExchange.Redis.RedisKey
+StackExchange.Redis.HotKeysResult.MetricKeyCpu.MetricKeyCpu() -> void
+StackExchange.Redis.HotKeysResult.MetricKeyCpu.MetricKeyCpu(in StackExchange.Redis.RedisKey key, long durationMicroseconds) -> void
+StackExchange.Redis.HotKeysResult.Metrics.get -> StackExchange.Redis.HotKeysMetrics
+StackExchange.Redis.HotKeysResult.NetworkBytesByKey.get -> System.ReadOnlySpan
+StackExchange.Redis.HotKeysResult.SampledCommandsSelectedSlotsNetworkBytes.get -> long?
+StackExchange.Redis.HotKeysResult.SampledCommandsSelectedSlotsTime.get -> System.TimeSpan?
+StackExchange.Redis.HotKeysResult.SampleRatio.get -> long
+StackExchange.Redis.HotKeysResult.SelectedSlots.get -> System.ReadOnlySpan
+StackExchange.Redis.HotKeysResult.TotalCpuTime.get -> System.TimeSpan?
+StackExchange.Redis.HotKeysResult.TotalCpuTimeSystem.get -> System.TimeSpan?
+StackExchange.Redis.HotKeysResult.TotalCpuTimeUser.get -> System.TimeSpan?
+StackExchange.Redis.HotKeysResult.TotalNetworkBytes.get -> long?
+StackExchange.Redis.HotKeysResult.TrackingActive.get -> bool
+StackExchange.Redis.IServer.HotKeysGet(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.HotKeysResult?
+StackExchange.Redis.IServer.HotKeysGetAsync(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IServer.HotKeysReset(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> void
+StackExchange.Redis.IServer.HotKeysResetAsync(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IServer.HotKeysStart(StackExchange.Redis.HotKeysMetrics metrics = (StackExchange.Redis.HotKeysMetrics)-1, long count = 0, System.TimeSpan duration = default(System.TimeSpan), long sampleRatio = 1, int[]? slots = null, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> void
+StackExchange.Redis.IServer.HotKeysStartAsync(StackExchange.Redis.HotKeysMetrics metrics = (StackExchange.Redis.HotKeysMetrics)-1, long count = 0, System.TimeSpan duration = default(System.TimeSpan), long sampleRatio = 1, int[]? slots = null, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IServer.HotKeysStop(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> bool
+StackExchange.Redis.IServer.HotKeysStopAsync(StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+override StackExchange.Redis.HotKeysResult.MetricKeyBytes.Equals(object? obj) -> bool
+override StackExchange.Redis.HotKeysResult.MetricKeyBytes.GetHashCode() -> int
+override StackExchange.Redis.HotKeysResult.MetricKeyBytes.ToString() -> string!
+override StackExchange.Redis.HotKeysResult.MetricKeyCpu.Equals(object? obj) -> bool
+override StackExchange.Redis.HotKeysResult.MetricKeyCpu.GetHashCode() -> int
+override StackExchange.Redis.HotKeysResult.MetricKeyCpu.ToString() -> string!
+override StackExchange.Redis.StreamIdempotentId.Equals(object? obj) -> bool
+override StackExchange.Redis.StreamIdempotentId.GetHashCode() -> int
+override StackExchange.Redis.StreamIdempotentId.ToString() -> string!
+StackExchange.Redis.IDatabase.StreamAdd(StackExchange.Redis.RedisKey key, StackExchange.Redis.NameValueEntry[]! streamPairs, StackExchange.Redis.StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StackExchange.Redis.StreamTrimMode trimMode = StackExchange.Redis.StreamTrimMode.KeepReferences, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
+StackExchange.Redis.IDatabase.StreamAdd(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue streamField, StackExchange.Redis.RedisValue streamValue, StackExchange.Redis.StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StackExchange.Redis.StreamTrimMode trimMode = StackExchange.Redis.StreamTrimMode.KeepReferences, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
+StackExchange.Redis.IDatabase.StreamConfigure(StackExchange.Redis.RedisKey key, StackExchange.Redis.StreamConfiguration! configuration, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> void
+StackExchange.Redis.IDatabase.StreamNegativeAcknowledge(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue groupName, StackExchange.Redis.StreamNackMode mode, StackExchange.Redis.RedisValue messageId, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> long
+StackExchange.Redis.IDatabase.StreamNegativeAcknowledge(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue groupName, StackExchange.Redis.StreamNackMode mode, StackExchange.Redis.RedisValue[]! messageIds, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> long
+StackExchange.Redis.IDatabaseAsync.StreamAddAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.NameValueEntry[]! streamPairs, StackExchange.Redis.StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StackExchange.Redis.StreamTrimMode trimMode = StackExchange.Redis.StreamTrimMode.KeepReferences, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.StreamAddAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue streamField, StackExchange.Redis.RedisValue streamValue, StackExchange.Redis.StreamIdempotentId idempotentId, long? maxLength = null, bool useApproximateMaxLength = false, long? limit = null, StackExchange.Redis.StreamTrimMode trimMode = StackExchange.Redis.StreamTrimMode.KeepReferences, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.StreamConfigureAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.StreamConfiguration! configuration, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.StreamNegativeAcknowledgeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue groupName, StackExchange.Redis.StreamNackMode mode, StackExchange.Redis.RedisValue messageId, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.StreamNegativeAcknowledgeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue groupName, StackExchange.Redis.StreamNackMode mode, StackExchange.Redis.RedisValue[]! messageIds, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.StreamConfiguration
+StackExchange.Redis.StreamConfiguration.IdmpDuration.get -> long?
+StackExchange.Redis.StreamConfiguration.IdmpDuration.set -> void
+StackExchange.Redis.StreamConfiguration.IdmpMaxSize.get -> long?
+StackExchange.Redis.StreamConfiguration.IdmpMaxSize.set -> void
+StackExchange.Redis.StreamConfiguration.StreamConfiguration() -> void
+StackExchange.Redis.StreamIdempotentId
+StackExchange.Redis.StreamIdempotentId.IdempotentId.get -> StackExchange.Redis.RedisValue
+StackExchange.Redis.StreamIdempotentId.ProducerId.get -> StackExchange.Redis.RedisValue
+StackExchange.Redis.StreamIdempotentId.StreamIdempotentId() -> void
+StackExchange.Redis.StreamIdempotentId.StreamIdempotentId(StackExchange.Redis.RedisValue producerId) -> void
+StackExchange.Redis.StreamIdempotentId.StreamIdempotentId(StackExchange.Redis.RedisValue producerId, StackExchange.Redis.RedisValue idempotentId) -> void
+StackExchange.Redis.StreamInfo.IdmpDuration.get -> long
+StackExchange.Redis.StreamInfo.IdmpMaxSize.get -> long
+StackExchange.Redis.StreamInfo.IidsAdded.get -> long
+StackExchange.Redis.StreamInfo.IidsDuplicates.get -> long
+StackExchange.Redis.StreamInfo.IidsTracked.get -> long
+StackExchange.Redis.StreamInfo.PidsTracked.get -> long
+StackExchange.Redis.StreamNackMode
+StackExchange.Redis.StreamNackMode.Fail = 1 -> StackExchange.Redis.StreamNackMode
+StackExchange.Redis.StreamNackMode.Fatal = 2 -> StackExchange.Redis.StreamNackMode
+StackExchange.Redis.StreamNackMode.Silent = 0 -> StackExchange.Redis.StreamNackMode
StackExchange.Redis.StreamInfo.EntriesAdded.get -> long
StackExchange.Redis.StreamInfo.MaxDeletedEntryId.get -> StackExchange.Redis.RedisValue
StackExchange.Redis.StreamInfo.RecordedFirstEntryId.get -> StackExchange.Redis.RedisValue
@@ -2322,48 +2322,48 @@ StackExchange.Redis.ProductVariant
StackExchange.Redis.ProductVariant.Garnet = 2 -> StackExchange.Redis.ProductVariant
StackExchange.Redis.ProductVariant.Redis = 0 -> StackExchange.Redis.ProductVariant
StackExchange.Redis.ProductVariant.Valkey = 1 -> StackExchange.Redis.ProductVariant
-[SER006]static StackExchange.Redis.RedisChannel.SubKeyEvent(StackExchange.Redis.KeyNotificationType type, int? database = null) -> StackExchange.Redis.RedisChannel
-[SER006]static StackExchange.Redis.RedisChannel.SubKeyEvent(System.ReadOnlySpan type, int? database) -> StackExchange.Redis.RedisChannel
-[SER006]static StackExchange.Redis.RedisChannel.SubKeySpaceEvent(StackExchange.Redis.KeyNotificationType type, in StackExchange.Redis.RedisKey key, int? database = null) -> StackExchange.Redis.RedisChannel
-[SER006]static StackExchange.Redis.RedisChannel.SubKeySpaceEvent(System.ReadOnlySpan type, in StackExchange.Redis.RedisKey key, int? database) -> StackExchange.Redis.RedisChannel
-[SER006]static StackExchange.Redis.RedisChannel.SubKeySpaceItem(in StackExchange.Redis.RedisKey key, in StackExchange.Redis.RedisKey subkey, int database) -> StackExchange.Redis.RedisChannel
-[SER006]static StackExchange.Redis.RedisChannel.SubKeySpacePattern(in StackExchange.Redis.RedisKey pattern, int? database = null) -> StackExchange.Redis.RedisChannel
-[SER006]static StackExchange.Redis.RedisChannel.SubKeySpacePrefix(in StackExchange.Redis.RedisKey prefix, int? database = null) -> StackExchange.Redis.RedisChannel
-[SER006]static StackExchange.Redis.RedisChannel.SubKeySpacePrefix(System.ReadOnlySpan prefix, int? database = null) -> StackExchange.Redis.RedisChannel
-[SER006]static StackExchange.Redis.RedisChannel.SubKeySpaceSingleKey(in StackExchange.Redis.RedisKey key, int database) -> StackExchange.Redis.RedisChannel
-[SER006]StackExchange.Redis.KeyNotification.GetSubKeys() -> StackExchange.Redis.KeyNotification.SubKeyEnumerable
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.SubKeyEnumerable() -> void
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.CopyTo(System.Span destination) -> int
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.Count() -> int
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.First() -> StackExchange.Redis.RedisValue
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.FirstOrDefault() -> StackExchange.Redis.RedisValue
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.GetEnumerator() -> StackExchange.Redis.KeyNotification.SubKeyEnumerator
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.Single() -> StackExchange.Redis.RedisValue
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.SingleOrDefault() -> StackExchange.Redis.RedisValue
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.ToArray() -> StackExchange.Redis.RedisValue[]!
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.ToList() -> System.Collections.Generic.List!
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerable.TryCopyTo(System.Span destination, out int count) -> bool
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.SubKeyEnumerator() -> void
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.CurrentByteCount.get -> int
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.Current.get -> StackExchange.Redis.RedisValue
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.CurrentMaxCharCount.get -> int
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.CurrentSpan.get -> System.ReadOnlySpan
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.Dispose() -> void
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.GetCurrentCharCount() -> int
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.MoveNext() -> bool
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.TryCopyTo(scoped System.Span destination, out int bytesWritten) -> bool
-[SER006]StackExchange.Redis.KeyNotification.SubKeyEnumerator.TryCopyTo(scoped System.Span destination, out int charsWritten) -> bool
+static StackExchange.Redis.RedisChannel.SubKeyEvent(StackExchange.Redis.KeyNotificationType type, int? database = null) -> StackExchange.Redis.RedisChannel
+static StackExchange.Redis.RedisChannel.SubKeyEvent(System.ReadOnlySpan type, int? database) -> StackExchange.Redis.RedisChannel
+static StackExchange.Redis.RedisChannel.SubKeySpaceEvent(StackExchange.Redis.KeyNotificationType type, in StackExchange.Redis.RedisKey key, int? database = null) -> StackExchange.Redis.RedisChannel
+static StackExchange.Redis.RedisChannel.SubKeySpaceEvent(System.ReadOnlySpan type, in StackExchange.Redis.RedisKey key, int? database) -> StackExchange.Redis.RedisChannel
+static StackExchange.Redis.RedisChannel.SubKeySpaceItem(in StackExchange.Redis.RedisKey key, in StackExchange.Redis.RedisKey subkey, int database) -> StackExchange.Redis.RedisChannel
+static StackExchange.Redis.RedisChannel.SubKeySpacePattern(in StackExchange.Redis.RedisKey pattern, int? database = null) -> StackExchange.Redis.RedisChannel
+static StackExchange.Redis.RedisChannel.SubKeySpacePrefix(in StackExchange.Redis.RedisKey prefix, int? database = null) -> StackExchange.Redis.RedisChannel
+static StackExchange.Redis.RedisChannel.SubKeySpacePrefix(System.ReadOnlySpan prefix, int? database = null) -> StackExchange.Redis.RedisChannel
+static StackExchange.Redis.RedisChannel.SubKeySpaceSingleKey(in StackExchange.Redis.RedisKey key, int database) -> StackExchange.Redis.RedisChannel
+StackExchange.Redis.KeyNotification.GetSubKeys() -> StackExchange.Redis.KeyNotification.SubKeyEnumerable
+StackExchange.Redis.KeyNotification.SubKeyEnumerable
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.SubKeyEnumerable() -> void
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.CopyTo(System.Span destination) -> int
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.Count() -> int
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.First() -> StackExchange.Redis.RedisValue
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.FirstOrDefault() -> StackExchange.Redis.RedisValue
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.GetEnumerator() -> StackExchange.Redis.KeyNotification.SubKeyEnumerator
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.Single() -> StackExchange.Redis.RedisValue
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.SingleOrDefault() -> StackExchange.Redis.RedisValue
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.ToArray() -> StackExchange.Redis.RedisValue[]!
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.ToList() -> System.Collections.Generic.List!
+StackExchange.Redis.KeyNotification.SubKeyEnumerable.TryCopyTo(System.Span destination, out int count) -> bool
+StackExchange.Redis.KeyNotification.SubKeyEnumerator
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.SubKeyEnumerator() -> void
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.CurrentByteCount.get -> int
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.Current.get -> StackExchange.Redis.RedisValue
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.CurrentMaxCharCount.get -> int
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.CurrentSpan.get -> System.ReadOnlySpan
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.Dispose() -> void
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.GetCurrentCharCount() -> int
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.MoveNext() -> bool
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.TryCopyTo(scoped System.Span destination, out int bytesWritten) -> bool
+StackExchange.Redis.KeyNotification.SubKeyEnumerator.TryCopyTo(scoped System.Span destination, out int charsWritten) -> bool
StackExchange.Redis.KeyNotification.HasSubKey.get -> bool
StackExchange.Redis.KeyNotification.Kind.get -> StackExchange.Redis.KeyNotificationKind
StackExchange.Redis.KeyNotificationKind
StackExchange.Redis.KeyNotificationKind.KeyEvent = 2 -> StackExchange.Redis.KeyNotificationKind
StackExchange.Redis.KeyNotificationKind.KeySpace = 1 -> StackExchange.Redis.KeyNotificationKind
-[SER006]StackExchange.Redis.KeyNotificationKind.SubKeyEvent = 4 -> StackExchange.Redis.KeyNotificationKind
-[SER006]StackExchange.Redis.KeyNotificationKind.SubKeySpace = 3 -> StackExchange.Redis.KeyNotificationKind
-[SER006]StackExchange.Redis.KeyNotificationKind.SubKeySpaceEvent = 6 -> StackExchange.Redis.KeyNotificationKind
-[SER006]StackExchange.Redis.KeyNotificationKind.SubKeySpaceItem = 5 -> StackExchange.Redis.KeyNotificationKind
+StackExchange.Redis.KeyNotificationKind.SubKeyEvent = 4 -> StackExchange.Redis.KeyNotificationKind
+StackExchange.Redis.KeyNotificationKind.SubKeySpace = 3 -> StackExchange.Redis.KeyNotificationKind
+StackExchange.Redis.KeyNotificationKind.SubKeySpaceEvent = 6 -> StackExchange.Redis.KeyNotificationKind
+StackExchange.Redis.KeyNotificationKind.SubKeySpaceItem = 5 -> StackExchange.Redis.KeyNotificationKind
StackExchange.Redis.KeyNotificationKind.Unknown = 0 -> StackExchange.Redis.KeyNotificationKind
StackExchange.Redis.KeyNotificationType.HExpire = 50 -> StackExchange.Redis.KeyNotificationType
StackExchange.Redis.IDatabase.SortedSetIncrement(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue member, double value, StackExchange.Redis.ValueCondition when, StackExchange.Redis.CommandFlags flags) -> double?
@@ -2371,151 +2371,151 @@ StackExchange.Redis.IDatabaseAsync.SortedSetIncrementAsync(StackExchange.Redis.R
override StackExchange.Redis.Configuration.AzureManagedRedisOptionsProvider.ConfigurationChannel.get -> string!
override StackExchange.Redis.Configuration.AzureManagedRedisOptionsProvider.Protocol.get -> StackExchange.Redis.RedisProtocol?
virtual StackExchange.Redis.Configuration.DefaultOptionsProvider.Protocol.get -> StackExchange.Redis.RedisProtocol?
-[SER006]StackExchange.Redis.ArrayGrepRequest
-[SER006]StackExchange.Redis.ArrayGrepRequest.AddPredicate(StackExchange.Redis.ArrayGrepRequest.Predicate! predicate) -> void
-[SER006]StackExchange.Redis.ArrayGrepRequest.ArrayGrepRequest() -> void
-[SER006]StackExchange.Redis.ArrayGrepRequest.Count.get -> int
-[SER006]StackExchange.Redis.ArrayGrepRequest.End.get -> StackExchange.Redis.RedisArrayIndex?
-[SER006]StackExchange.Redis.ArrayGrepRequest.End.set -> void
-[SER006]StackExchange.Redis.ArrayGrepRequest.IncludeValues.get -> bool
-[SER006]StackExchange.Redis.ArrayGrepRequest.IncludeValues.set -> void
-[SER006]StackExchange.Redis.ArrayGrepRequest.IsCaseSensitive.get -> bool
-[SER006]StackExchange.Redis.ArrayGrepRequest.IsCaseSensitive.set -> void
-[SER006]StackExchange.Redis.ArrayGrepRequest.IsIntersection.get -> bool
-[SER006]StackExchange.Redis.ArrayGrepRequest.IsIntersection.set -> void
-[SER006]StackExchange.Redis.ArrayGrepRequest.Limit.get -> long?
-[SER006]StackExchange.Redis.ArrayGrepRequest.Limit.set -> void
-[SER006]StackExchange.Redis.ArrayGrepRequest.Predicate
-[SER006]StackExchange.Redis.ArrayGrepRequest.Start.get -> StackExchange.Redis.RedisArrayIndex?
-[SER006]StackExchange.Redis.ArrayGrepRequest.Start.set -> void
-[SER006]StackExchange.Redis.ArrayGrepRequest.this[int index].get -> StackExchange.Redis.ArrayGrepRequest.Predicate!
-[SER006]StackExchange.Redis.ArrayInfo
-[SER006]StackExchange.Redis.ArrayInfo.ArrayInfo() -> void
-[SER006]StackExchange.Redis.ArrayInfo.Count.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.ArrayInfo.DirectorySize.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.ArrayInfo.Length.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.ArrayInfo.NextInsertIndex.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.ArrayInfo.SliceSize.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.ArrayInfo.Slices.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.ArrayInfo.SuperDirEntries.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.ArrayOperation.And = 4 -> StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.ArrayOperation.Match = 7 -> StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.ArrayOperation.Max = 3 -> StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.ArrayOperation.Min = 2 -> StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.ArrayOperation.Or = 5 -> StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.ArrayOperation.Sum = 1 -> StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.ArrayOperation.Unknown = 0 -> StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.ArrayOperation.Used = 8 -> StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.ArrayOperation.Xor = 6 -> StackExchange.Redis.ArrayOperation
-[SER006]StackExchange.Redis.IDatabase.ArrayCount(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.IDatabase.ArrayDelete(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> bool
-[SER006]StackExchange.Redis.IDatabase.ArrayDelete(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex[]! indices, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> int
-[SER006]StackExchange.Redis.IDatabase.ArrayDeleteRange(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.IDatabase.ArrayDeleteRange(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayRange[]! ranges, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.IDatabase.ArrayGet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
-[SER006]StackExchange.Redis.IDatabase.ArrayGet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex[]! indices, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue[]!
-[SER006]StackExchange.Redis.IDatabase.ArrayGetRange(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue[]!
-[SER006]StackExchange.Redis.IDatabase.ArrayGrep(StackExchange.Redis.RedisKey key, StackExchange.Redis.ArrayGrepRequest! request, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayEntry[]!
-[SER006]StackExchange.Redis.IDatabase.ArrayInfo(StackExchange.Redis.RedisKey key, bool full = false, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.ArrayInfo
-[SER006]StackExchange.Redis.IDatabase.ArrayInsert(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.IDatabase.ArrayInsert(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.IDatabase.ArrayLastItems(StackExchange.Redis.RedisKey key, int count, bool reverse = false, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue[]!
-[SER006]StackExchange.Redis.IDatabase.ArrayLength(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.IDatabase.ArrayNext(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex?
-[SER006]StackExchange.Redis.IDatabase.ArrayOperation(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.ArrayOperation operation, StackExchange.Redis.RedisValue operand = default(StackExchange.Redis.RedisValue), StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
-[SER006]StackExchange.Redis.IDatabase.ArrayRing(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex maxLength, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.IDatabase.ArrayRing(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex maxLength, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.IDatabase.ArrayScan(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, int limit = 0, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayEntry[]!
-[SER006]StackExchange.Redis.IDatabase.ArraySeek(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> bool
-[SER006]StackExchange.Redis.IDatabase.ArraySet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayEntry[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> int
-[SER006]StackExchange.Redis.IDatabase.ArraySet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> bool
-[SER006]StackExchange.Redis.IDatabase.ArraySet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> int
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayCountAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayDeleteAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayDeleteAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex[]! indices, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayDeleteRangeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayDeleteRangeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayRange[]! ranges, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayGetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayGetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex[]! indices, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayGetRangeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayGrepAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.ArrayGrepRequest! request, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayInfoAsync(StackExchange.Redis.RedisKey key, bool full = false, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayInsertAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayInsertAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayLastItemsAsync(StackExchange.Redis.RedisKey key, int count, bool reverse = false, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayLengthAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayNextAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayOperationAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.ArrayOperation operation, StackExchange.Redis.RedisValue operand = default(StackExchange.Redis.RedisValue), StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayRingAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex maxLength, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayRingAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex maxLength, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArrayScanAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, int limit = 0, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArraySeekAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArraySetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayEntry[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArraySetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.IDatabaseAsync.ArraySetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
-[SER006]StackExchange.Redis.KeyNotificationType.ArDel = 51 -> StackExchange.Redis.KeyNotificationType
-[SER006]StackExchange.Redis.KeyNotificationType.ArDelRange = 52 -> StackExchange.Redis.KeyNotificationType
-[SER006]StackExchange.Redis.KeyNotificationType.ArSet = 53 -> StackExchange.Redis.KeyNotificationType
-[SER006]StackExchange.Redis.RedisArrayEntry
-[SER006]StackExchange.Redis.RedisArrayEntry.Equals(StackExchange.Redis.RedisArrayEntry other) -> bool
-[SER006]StackExchange.Redis.RedisArrayEntry.Index.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.RedisArrayEntry.RedisArrayEntry() -> void
-[SER006]StackExchange.Redis.RedisArrayEntry.RedisArrayEntry(StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue value) -> void
-[SER006]StackExchange.Redis.RedisArrayEntry.Value.get -> StackExchange.Redis.RedisValue
-[SER006]StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.RedisArrayIndex.Equals(StackExchange.Redis.RedisArrayIndex other) -> bool
-[SER006]StackExchange.Redis.RedisArrayIndex.RedisArrayIndex() -> void
-[SER006]StackExchange.Redis.RedisArrayIndex.RedisArrayIndex(int value) -> void
-[SER006]StackExchange.Redis.RedisArrayIndex.RedisArrayIndex(long value) -> void
-[SER006]StackExchange.Redis.RedisArrayIndex.RedisArrayIndex(ulong value) -> void
-[SER006]StackExchange.Redis.RedisArrayIndex.Value.get -> ulong
-[SER006]StackExchange.Redis.RedisArrayRange
-[SER006]StackExchange.Redis.RedisArrayRange.End.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.RedisArrayRange.Equals(StackExchange.Redis.RedisArrayRange other) -> bool
-[SER006]StackExchange.Redis.RedisArrayRange.RedisArrayRange() -> void
-[SER006]StackExchange.Redis.RedisArrayRange.RedisArrayRange(StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end) -> void
-[SER006]StackExchange.Redis.RedisArrayRange.Start.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]StackExchange.Redis.RedisType.Array = 9 -> StackExchange.Redis.RedisType
-[SER006]override StackExchange.Redis.RedisArrayEntry.Equals(object? obj) -> bool
-[SER006]override StackExchange.Redis.RedisArrayEntry.GetHashCode() -> int
-[SER006]override StackExchange.Redis.RedisArrayEntry.ToString() -> string!
-[SER006]override StackExchange.Redis.RedisArrayIndex.Equals(object? obj) -> bool
-[SER006]override StackExchange.Redis.RedisArrayIndex.GetHashCode() -> int
-[SER006]override StackExchange.Redis.RedisArrayIndex.ToString() -> string!
-[SER006]override StackExchange.Redis.RedisArrayRange.Equals(object? obj) -> bool
-[SER006]override StackExchange.Redis.RedisArrayRange.GetHashCode() -> int
-[SER006]override StackExchange.Redis.RedisArrayRange.ToString() -> string!
-[SER006]static StackExchange.Redis.ArrayGrepRequest.Predicate.Exact(StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ArrayGrepRequest.Predicate!
-[SER006]static StackExchange.Redis.ArrayGrepRequest.Predicate.Glob(string! value) -> StackExchange.Redis.ArrayGrepRequest.Predicate!
-[SER006]static StackExchange.Redis.ArrayGrepRequest.Predicate.Match(string! value) -> StackExchange.Redis.ArrayGrepRequest.Predicate!
-[SER006]static StackExchange.Redis.ArrayGrepRequest.Predicate.Regex(string! value) -> StackExchange.Redis.ArrayGrepRequest.Predicate!
-[SER006]static StackExchange.Redis.RedisArrayEntry.implicit operator StackExchange.Redis.RedisArrayEntry(System.Collections.Generic.KeyValuePair value) -> StackExchange.Redis.RedisArrayEntry
-[SER006]static StackExchange.Redis.RedisArrayEntry.implicit operator System.Collections.Generic.KeyValuePair(StackExchange.Redis.RedisArrayEntry value) -> System.Collections.Generic.KeyValuePair
-[SER006]static StackExchange.Redis.RedisArrayEntry.operator !=(StackExchange.Redis.RedisArrayEntry x, StackExchange.Redis.RedisArrayEntry y) -> bool
-[SER006]static StackExchange.Redis.RedisArrayEntry.operator ==(StackExchange.Redis.RedisArrayEntry x, StackExchange.Redis.RedisArrayEntry y) -> bool
-[SER006]static StackExchange.Redis.RedisArrayIndex.MaxValue.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]static StackExchange.Redis.RedisArrayIndex.MinValue.get -> StackExchange.Redis.RedisArrayIndex
-[SER006]static StackExchange.Redis.RedisArrayIndex.implicit operator StackExchange.Redis.RedisArrayIndex(int value) -> StackExchange.Redis.RedisArrayIndex
-[SER006]static StackExchange.Redis.RedisArrayIndex.implicit operator StackExchange.Redis.RedisArrayIndex(long value) -> StackExchange.Redis.RedisArrayIndex
-[SER006]static StackExchange.Redis.RedisArrayIndex.implicit operator StackExchange.Redis.RedisArrayIndex(ulong value) -> StackExchange.Redis.RedisArrayIndex
-[SER006]static StackExchange.Redis.RedisArrayIndex.implicit operator ulong(StackExchange.Redis.RedisArrayIndex value) -> ulong
-[SER006]static StackExchange.Redis.RedisArrayIndex.explicit operator int(StackExchange.Redis.RedisArrayIndex value) -> int
-[SER006]static StackExchange.Redis.RedisArrayIndex.explicit operator long(StackExchange.Redis.RedisArrayIndex value) -> long
-[SER006]static StackExchange.Redis.RedisArrayIndex.operator !=(StackExchange.Redis.RedisArrayIndex x, StackExchange.Redis.RedisArrayIndex y) -> bool
-[SER006]static StackExchange.Redis.RedisArrayIndex.operator ==(StackExchange.Redis.RedisArrayIndex x, StackExchange.Redis.RedisArrayIndex y) -> bool
-[SER006]static StackExchange.Redis.RedisArrayRange.operator !=(StackExchange.Redis.RedisArrayRange x, StackExchange.Redis.RedisArrayRange y) -> bool
-[SER006]static StackExchange.Redis.RedisArrayRange.operator ==(StackExchange.Redis.RedisArrayRange x, StackExchange.Redis.RedisArrayRange y) -> bool
+StackExchange.Redis.ArrayGrepRequest
+StackExchange.Redis.ArrayGrepRequest.AddPredicate(StackExchange.Redis.ArrayGrepRequest.Predicate! predicate) -> void
+StackExchange.Redis.ArrayGrepRequest.ArrayGrepRequest() -> void
+StackExchange.Redis.ArrayGrepRequest.Count.get -> int
+StackExchange.Redis.ArrayGrepRequest.End.get -> StackExchange.Redis.RedisArrayIndex?
+StackExchange.Redis.ArrayGrepRequest.End.set -> void
+StackExchange.Redis.ArrayGrepRequest.IncludeValues.get -> bool
+StackExchange.Redis.ArrayGrepRequest.IncludeValues.set -> void
+StackExchange.Redis.ArrayGrepRequest.IsCaseSensitive.get -> bool
+StackExchange.Redis.ArrayGrepRequest.IsCaseSensitive.set -> void
+StackExchange.Redis.ArrayGrepRequest.IsIntersection.get -> bool
+StackExchange.Redis.ArrayGrepRequest.IsIntersection.set -> void
+StackExchange.Redis.ArrayGrepRequest.Limit.get -> long?
+StackExchange.Redis.ArrayGrepRequest.Limit.set -> void
+StackExchange.Redis.ArrayGrepRequest.Predicate
+StackExchange.Redis.ArrayGrepRequest.Start.get -> StackExchange.Redis.RedisArrayIndex?
+StackExchange.Redis.ArrayGrepRequest.Start.set -> void
+StackExchange.Redis.ArrayGrepRequest.this[int index].get -> StackExchange.Redis.ArrayGrepRequest.Predicate!
+StackExchange.Redis.ArrayInfo
+StackExchange.Redis.ArrayInfo.ArrayInfo() -> void
+StackExchange.Redis.ArrayInfo.Count.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.ArrayInfo.DirectorySize.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.ArrayInfo.Length.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.ArrayInfo.NextInsertIndex.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.ArrayInfo.SliceSize.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.ArrayInfo.Slices.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.ArrayInfo.SuperDirEntries.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.ArrayOperation
+StackExchange.Redis.ArrayOperation.And = 4 -> StackExchange.Redis.ArrayOperation
+StackExchange.Redis.ArrayOperation.Match = 7 -> StackExchange.Redis.ArrayOperation
+StackExchange.Redis.ArrayOperation.Max = 3 -> StackExchange.Redis.ArrayOperation
+StackExchange.Redis.ArrayOperation.Min = 2 -> StackExchange.Redis.ArrayOperation
+StackExchange.Redis.ArrayOperation.Or = 5 -> StackExchange.Redis.ArrayOperation
+StackExchange.Redis.ArrayOperation.Sum = 1 -> StackExchange.Redis.ArrayOperation
+StackExchange.Redis.ArrayOperation.Unknown = 0 -> StackExchange.Redis.ArrayOperation
+StackExchange.Redis.ArrayOperation.Used = 8 -> StackExchange.Redis.ArrayOperation
+StackExchange.Redis.ArrayOperation.Xor = 6 -> StackExchange.Redis.ArrayOperation
+StackExchange.Redis.IDatabase.ArrayCount(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.IDatabase.ArrayDelete(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> bool
+StackExchange.Redis.IDatabase.ArrayDelete(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex[]! indices, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> int
+StackExchange.Redis.IDatabase.ArrayDeleteRange(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.IDatabase.ArrayDeleteRange(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayRange[]! ranges, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.IDatabase.ArrayGet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
+StackExchange.Redis.IDatabase.ArrayGet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex[]! indices, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue[]!
+StackExchange.Redis.IDatabase.ArrayGetRange(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue[]!
+StackExchange.Redis.IDatabase.ArrayGrep(StackExchange.Redis.RedisKey key, StackExchange.Redis.ArrayGrepRequest! request, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayEntry[]!
+StackExchange.Redis.IDatabase.ArrayInfo(StackExchange.Redis.RedisKey key, bool full = false, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.ArrayInfo
+StackExchange.Redis.IDatabase.ArrayInsert(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.IDatabase.ArrayInsert(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.IDatabase.ArrayLastItems(StackExchange.Redis.RedisKey key, int count, bool reverse = false, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue[]!
+StackExchange.Redis.IDatabase.ArrayLength(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.IDatabase.ArrayNext(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex?
+StackExchange.Redis.IDatabase.ArrayOperation(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.ArrayOperation operation, StackExchange.Redis.RedisValue operand = default(StackExchange.Redis.RedisValue), StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisValue
+StackExchange.Redis.IDatabase.ArrayRing(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex maxLength, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.IDatabase.ArrayRing(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex maxLength, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.IDatabase.ArrayScan(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, int limit = 0, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> StackExchange.Redis.RedisArrayEntry[]!
+StackExchange.Redis.IDatabase.ArraySeek(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> bool
+StackExchange.Redis.IDatabase.ArraySet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayEntry[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> int
+StackExchange.Redis.IDatabase.ArraySet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> bool
+StackExchange.Redis.IDatabase.ArraySet(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> int
+StackExchange.Redis.IDatabaseAsync.ArrayCountAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayDeleteAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayDeleteAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex[]! indices, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayDeleteRangeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayDeleteRangeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayRange[]! ranges, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayGetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayGetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex[]! indices, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayGetRangeAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayGrepAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.ArrayGrepRequest! request, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayInfoAsync(StackExchange.Redis.RedisKey key, bool full = false, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayInsertAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayInsertAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayLastItemsAsync(StackExchange.Redis.RedisKey key, int count, bool reverse = false, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayLengthAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayNextAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayOperationAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, StackExchange.Redis.ArrayOperation operation, StackExchange.Redis.RedisValue operand = default(StackExchange.Redis.RedisValue), StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayRingAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex maxLength, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayRingAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex maxLength, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArrayScanAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end, int limit = 0, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArraySeekAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArraySetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayEntry[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArraySetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue value, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.IDatabaseAsync.ArraySetAsync(StackExchange.Redis.RedisKey key, StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue[]! values, StackExchange.Redis.CommandFlags flags = StackExchange.Redis.CommandFlags.None) -> System.Threading.Tasks.Task!
+StackExchange.Redis.KeyNotificationType.ArDel = 51 -> StackExchange.Redis.KeyNotificationType
+StackExchange.Redis.KeyNotificationType.ArDelRange = 52 -> StackExchange.Redis.KeyNotificationType
+StackExchange.Redis.KeyNotificationType.ArSet = 53 -> StackExchange.Redis.KeyNotificationType
+StackExchange.Redis.RedisArrayEntry
+StackExchange.Redis.RedisArrayEntry.Equals(StackExchange.Redis.RedisArrayEntry other) -> bool
+StackExchange.Redis.RedisArrayEntry.Index.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.RedisArrayEntry.RedisArrayEntry() -> void
+StackExchange.Redis.RedisArrayEntry.RedisArrayEntry(StackExchange.Redis.RedisArrayIndex index, StackExchange.Redis.RedisValue value) -> void
+StackExchange.Redis.RedisArrayEntry.Value.get -> StackExchange.Redis.RedisValue
+StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.RedisArrayIndex.Equals(StackExchange.Redis.RedisArrayIndex other) -> bool
+StackExchange.Redis.RedisArrayIndex.RedisArrayIndex() -> void
+StackExchange.Redis.RedisArrayIndex.RedisArrayIndex(int value) -> void
+StackExchange.Redis.RedisArrayIndex.RedisArrayIndex(long value) -> void
+StackExchange.Redis.RedisArrayIndex.RedisArrayIndex(ulong value) -> void
+StackExchange.Redis.RedisArrayIndex.Value.get -> ulong
+StackExchange.Redis.RedisArrayRange
+StackExchange.Redis.RedisArrayRange.End.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.RedisArrayRange.Equals(StackExchange.Redis.RedisArrayRange other) -> bool
+StackExchange.Redis.RedisArrayRange.RedisArrayRange() -> void
+StackExchange.Redis.RedisArrayRange.RedisArrayRange(StackExchange.Redis.RedisArrayIndex start, StackExchange.Redis.RedisArrayIndex end) -> void
+StackExchange.Redis.RedisArrayRange.Start.get -> StackExchange.Redis.RedisArrayIndex
+StackExchange.Redis.RedisType.Array = 9 -> StackExchange.Redis.RedisType
+override StackExchange.Redis.RedisArrayEntry.Equals(object? obj) -> bool
+override StackExchange.Redis.RedisArrayEntry.GetHashCode() -> int
+override StackExchange.Redis.RedisArrayEntry.ToString() -> string!
+override StackExchange.Redis.RedisArrayIndex.Equals(object? obj) -> bool
+override StackExchange.Redis.RedisArrayIndex.GetHashCode() -> int
+override StackExchange.Redis.RedisArrayIndex.ToString() -> string!
+override StackExchange.Redis.RedisArrayRange.Equals(object? obj) -> bool
+override StackExchange.Redis.RedisArrayRange.GetHashCode() -> int
+override StackExchange.Redis.RedisArrayRange.ToString() -> string!
+static StackExchange.Redis.ArrayGrepRequest.Predicate.Exact(StackExchange.Redis.RedisValue value) -> StackExchange.Redis.ArrayGrepRequest.Predicate!
+static StackExchange.Redis.ArrayGrepRequest.Predicate.Glob(string! value) -> StackExchange.Redis.ArrayGrepRequest.Predicate!
+static StackExchange.Redis.ArrayGrepRequest.Predicate.Match(string! value) -> StackExchange.Redis.ArrayGrepRequest.Predicate!
+static StackExchange.Redis.ArrayGrepRequest.Predicate.Regex(string! value) -> StackExchange.Redis.ArrayGrepRequest.Predicate!
+static StackExchange.Redis.RedisArrayEntry.implicit operator StackExchange.Redis.RedisArrayEntry(System.Collections.Generic.KeyValuePair value) -> StackExchange.Redis.RedisArrayEntry
+static StackExchange.Redis.RedisArrayEntry.implicit operator System.Collections.Generic.KeyValuePair(StackExchange.Redis.RedisArrayEntry value) -> System.Collections.Generic.KeyValuePair
+static StackExchange.Redis.RedisArrayEntry.operator !=(StackExchange.Redis.RedisArrayEntry x, StackExchange.Redis.RedisArrayEntry y) -> bool
+static StackExchange.Redis.RedisArrayEntry.operator ==(StackExchange.Redis.RedisArrayEntry x, StackExchange.Redis.RedisArrayEntry y) -> bool
+static StackExchange.Redis.RedisArrayIndex.MaxValue.get -> StackExchange.Redis.RedisArrayIndex
+static StackExchange.Redis.RedisArrayIndex.MinValue.get -> StackExchange.Redis.RedisArrayIndex
+static StackExchange.Redis.RedisArrayIndex.implicit operator StackExchange.Redis.RedisArrayIndex(int value) -> StackExchange.Redis.RedisArrayIndex
+static StackExchange.Redis.RedisArrayIndex.implicit operator StackExchange.Redis.RedisArrayIndex(long value) -> StackExchange.Redis.RedisArrayIndex
+static StackExchange.Redis.RedisArrayIndex.implicit operator StackExchange.Redis.RedisArrayIndex(ulong value) -> StackExchange.Redis.RedisArrayIndex
+static StackExchange.Redis.RedisArrayIndex.implicit operator ulong(StackExchange.Redis.RedisArrayIndex value) -> ulong
+static StackExchange.Redis.RedisArrayIndex.explicit operator int(StackExchange.Redis.RedisArrayIndex value) -> int
+static StackExchange.Redis.RedisArrayIndex.explicit operator long(StackExchange.Redis.RedisArrayIndex value) -> long
+static StackExchange.Redis.RedisArrayIndex.operator !=(StackExchange.Redis.RedisArrayIndex x, StackExchange.Redis.RedisArrayIndex y) -> bool
+static StackExchange.Redis.RedisArrayIndex.operator ==(StackExchange.Redis.RedisArrayIndex x, StackExchange.Redis.RedisArrayIndex y) -> bool
+static StackExchange.Redis.RedisArrayRange.operator !=(StackExchange.Redis.RedisArrayRange x, StackExchange.Redis.RedisArrayRange y) -> bool
+static StackExchange.Redis.RedisArrayRange.operator ==(StackExchange.Redis.RedisArrayRange x, StackExchange.Redis.RedisArrayRange y) -> bool
StackExchange.Redis.ConfigurationOptions.TcpKeepAlive.get -> bool
StackExchange.Redis.ConfigurationOptions.TcpKeepAlive.set -> void
virtual StackExchange.Redis.Configuration.DefaultOptionsProvider.TcpKeepAlive.get -> bool
-[SER006]StackExchange.Redis.ArrayGrepRequest.IsCaseInsensitive.get -> bool
-[SER006]StackExchange.Redis.ArrayGrepRequest.IsCaseInsensitive.set -> void
-[SER006]StackExchange.Redis.ArrayGrepRequest.IsReversed.get -> bool
-[SER006]StackExchange.Redis.ArrayGrepRequest.IsReversed.set -> void
-[SER006]StackExchange.Redis.ArrayInfo.ArrayInfo(scoped System.ReadOnlySpan> values) -> void
-[SER006]StackExchange.Redis.ArrayInfo.ToDictionary() -> System.Collections.Generic.Dictionary!
-[SER006]StackExchange.Redis.ArrayInfo.this[string! key].get -> StackExchange.Redis.RedisValue
+StackExchange.Redis.ArrayGrepRequest.IsCaseInsensitive.get -> bool
+StackExchange.Redis.ArrayGrepRequest.IsCaseInsensitive.set -> void
+StackExchange.Redis.ArrayGrepRequest.IsReversed.get -> bool
+StackExchange.Redis.ArrayGrepRequest.IsReversed.set -> void
+StackExchange.Redis.ArrayInfo.ArrayInfo(scoped System.ReadOnlySpan> values) -> void
+StackExchange.Redis.ArrayInfo.ToDictionary() -> System.Collections.Generic.Dictionary!
+StackExchange.Redis.ArrayInfo.this[string! key].get -> StackExchange.Redis.RedisValue
StackExchange.Redis.ConfigurationOptions.RequestBufferPool.get -> System.Buffers.MemoryPool?
StackExchange.Redis.ConfigurationOptions.RequestBufferPool.set -> void
StackExchange.Redis.ConfigurationOptions.ResponseBufferPool.get -> System.Buffers.MemoryPool?
@@ -2541,4 +2541,4 @@ static StackExchange.Redis.Lease.Create(int length, System.Buffers.MemoryPool
[SER005]virtual StackExchange.Redis.TestHarness.OnValidateFail(string! expected, string! actual) -> void
static StackExchange.Redis.RedisValue.implicit operator StackExchange.Redis.RedisValue(System.Buffers.ReadOnlySequence value) -> StackExchange.Redis.RedisValue
static StackExchange.Redis.RedisValue.implicit operator System.Buffers.ReadOnlySequence(StackExchange.Redis.RedisValue value) -> System.Buffers.ReadOnlySequence
-[SER002]static StackExchange.Redis.ValueCondition.CalculateDigest(in System.Buffers.ReadOnlySequence value) -> StackExchange.Redis.ValueCondition
+static StackExchange.Redis.ValueCondition.CalculateDigest(in System.Buffers.ReadOnlySequence value) -> StackExchange.Redis.ValueCondition
diff --git a/src/StackExchange.Redis/RedisChannel.cs b/src/StackExchange.Redis/RedisChannel.cs
index 4f2eda7c3..b917a2a62 100644
--- a/src/StackExchange.Redis/RedisChannel.cs
+++ b/src/StackExchange.Redis/RedisChannel.cs
@@ -339,7 +339,6 @@ private static RedisChannel CreateKeyEvent(ReadOnlySpan type, int? databas
///
/// Create a subkey (hash) notification channel for a single key in a single database.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public static RedisChannel SubKeySpaceSingleKey(in RedisKey key, int database)
// note we can allow patterns, because we aren't using PSUBSCRIBE
=> BuildKeySpaceChannel(key, database, RedisChannelOptions.KeyRouted, default, false, true, subkey: true);
@@ -347,7 +346,6 @@ public static RedisChannel SubKeySpaceSingleKey(in RedisKey key, int database)
///
/// Create a subkey (hash) notification channel for a pattern, optionally in a specified database.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public static RedisChannel SubKeySpacePattern(in RedisKey pattern, int? database = null)
=> BuildKeySpaceChannel(pattern, database, RedisChannelOptions.Pattern | RedisChannelOptions.MultiNode, default, appendStar: pattern.IsNull, allowKeyPatterns: true, subkey: true);
@@ -355,7 +353,6 @@ public static RedisChannel SubKeySpacePattern(in RedisKey pattern, int? database
///
/// Create a subkey (hash) notification channel using a raw prefix, optionally in a specified database.
///
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public static RedisChannel SubKeySpacePrefix(in RedisKey prefix, int? database = null)
{
if (prefix.IsEmpty) Throw();
@@ -367,7 +364,6 @@ public static RedisChannel SubKeySpacePrefix(in RedisKey prefix, int? database =
/// Create a key-notification channel using a raw prefix, optionally in a specified database.
///
[OverloadResolutionPriority(1)]
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public static RedisChannel SubKeySpacePrefix(ReadOnlySpan prefix, int? database = null)
{
if (prefix.IsEmpty) Throw();
@@ -379,7 +375,6 @@ public static RedisChannel SubKeySpacePrefix(ReadOnlySpan prefix, int? dat
/// Create a subkey (hash) event-notification channel for a given event type, optionally in a specified database.
///
#pragma warning disable RS0027
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public static RedisChannel SubKeyEvent(KeyNotificationType type, int? database = null)
#pragma warning restore RS0027
=> CreateKeyEvent(KeyNotificationTypeMetadata.GetRawBytes(type), database, subkey: true);
@@ -388,7 +383,6 @@ public static RedisChannel SubKeyEvent(KeyNotificationType type, int? database =
/// Create a subkey (hash) event-notification channel for a given event type, optionally in a specified database.
///
/// This API is intended for use with custom/unknown event types; for well-known types, use .
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public static RedisChannel SubKeyEvent(ReadOnlySpan type, int? database)
=> CreateKeyEvent(type, database, subkey: true);
@@ -396,7 +390,6 @@ public static RedisChannel SubKeyEvent(ReadOnlySpan type, int? database)
/// Create a subkey (hash) notification channel for a specific key and subkey in a single database.
///
/// Format: __subkeyspaceitem@{db}__:{key}\n{subkey}.
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public static RedisChannel SubKeySpaceItem(in RedisKey key, in RedisKey subkey, int database)
{
if (key.IsEmpty) throw new ArgumentNullException(nameof(key));
@@ -434,7 +427,6 @@ public static RedisChannel SubKeySpaceItem(in RedisKey key, in RedisKey subkey,
///
/// Format: __subkeyspaceevent@{db}__:{event}|{key}.
#pragma warning disable RS0027 // competing overloads - disambiguated via parameter types
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public static RedisChannel SubKeySpaceEvent(KeyNotificationType type, in RedisKey key, int? database = null)
#pragma warning restore RS0027
=> SubKeySpaceEvent(KeyNotificationTypeMetadata.GetRawBytes(type), key, database);
@@ -444,7 +436,6 @@ public static RedisChannel SubKeySpaceEvent(KeyNotificationType type, in RedisKe
///
/// This API is intended for use with custom/unknown event types; for well-known types, use .
/// Format: __subkeyspaceevent@{db}__:{event}|{key}.
- [Experimental(Experiments.Server_8_8, UrlFormat = Experiments.UrlFormat)]
public static RedisChannel SubKeySpaceEvent(ReadOnlySpan type, in RedisKey key, int? database)
{
if (type.IsEmpty) throw new ArgumentNullException(nameof(type));
diff --git a/src/StackExchange.Redis/StreamConfiguration.cs b/src/StackExchange.Redis/StreamConfiguration.cs
index 46e5d0ba3..d1b255549 100644
--- a/src/StackExchange.Redis/StreamConfiguration.cs
+++ b/src/StackExchange.Redis/StreamConfiguration.cs
@@ -6,7 +6,6 @@ namespace StackExchange.Redis;
///
/// Configuration parameters for a stream, for example idempotent producer (IDMP) duration and maxsize.
///
-[Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
public sealed class StreamConfiguration
{
///
diff --git a/src/StackExchange.Redis/StreamIdempotentId.cs b/src/StackExchange.Redis/StreamIdempotentId.cs
index 1ad331eda..501d6640d 100644
--- a/src/StackExchange.Redis/StreamIdempotentId.cs
+++ b/src/StackExchange.Redis/StreamIdempotentId.cs
@@ -10,7 +10,6 @@ namespace StackExchange.Redis;
/// caller can specify an that is unique and repeatable for a given data item, or omit it
/// and let the server generate it from the content of the data item. In either event: duplicates are rejected.
///
-[Experimental(Experiments.Server_8_6, UrlFormat = Experiments.UrlFormat)]
public readonly struct StreamIdempotentId
{
// note: if exposing wider, maybe expose as a by-ref property rather than a readonly field
diff --git a/src/StackExchange.Redis/ValueCondition.cs b/src/StackExchange.Redis/ValueCondition.cs
index 7516e74c0..a02245fa2 100644
--- a/src/StackExchange.Redis/ValueCondition.cs
+++ b/src/StackExchange.Redis/ValueCondition.cs
@@ -111,7 +111,6 @@ public override string ToString()
///
public RedisValue Value
{
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
get => _value;
}
@@ -141,26 +140,21 @@ private ValueCondition(ConditionKind kind, in RedisValue value)
///
/// Create a value equality condition with the supplied value.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
public static ValueCondition Equal(in RedisValue value) => new(ConditionKind.ValueEquals, value);
///
/// Create a value non-equality condition with the supplied value.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
-
public static ValueCondition NotEqual(in RedisValue value) => new(ConditionKind.ValueNotEquals, value);
///
/// Create a digest equality condition, computing the digest of the supplied value.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
public static ValueCondition DigestEqual(in RedisValue value) => value.Digest();
///
/// Create a digest non-equality condition, computing the digest of the supplied value.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
public static ValueCondition DigestNotEqual(in RedisValue value) => !value.Digest();
[ThreadStatic]
@@ -169,7 +163,6 @@ private ValueCondition(ConditionKind kind, in RedisValue value)
///
/// Calculate the digest of a payload, as an equality test. For a non-equality test, use on the result.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
public static ValueCondition CalculateDigest(in ReadOnlySequence value)
{
if (value.IsSingleSegment)
@@ -191,7 +184,6 @@ public static ValueCondition CalculateDigest(in ReadOnlySequence value)
///
/// Calculate the digest of a payload, as an equality test. For a non-equality test, use on the result.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
public static ValueCondition CalculateDigest(ReadOnlySpan value)
{
// the internal impl of XxHash3 uses ulong (not Span), so: use
@@ -203,7 +195,6 @@ public static ValueCondition CalculateDigest(ReadOnlySpan value)
///
/// Creates an equality match based on the specified digest bytes.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
public static ValueCondition ParseDigest(ReadOnlySpan digest)
{
if (digest.Length != 2 * DigestBytes) ThrowDigestLength();
@@ -238,7 +229,6 @@ private static byte ParseNibble(int b)
///
/// Creates an equality match based on the specified digest bytes.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
public static ValueCondition ParseDigest(ReadOnlySpan digest)
{
if (digest.Length != 2 * DigestBytes) ThrowDigestLength();
@@ -379,7 +369,6 @@ internal static Span WriteHex(long value, Span target)
///
/// Convert a value condition to a digest condition.
///
- [Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
public ValueCondition AsDigest() => _kind switch
{
ConditionKind.ValueEquals => _value.Digest(),