From b641d76725a24da940e9b7f5b770c4400b5f1c4f Mon Sep 17 00:00:00 2001 From: Marc Gravell Date: Tue, 21 Jul 2026 16:46:55 +0100 Subject: [PATCH] remove [Experimental] on established server features --- Directory.Build.props | 3 +- src/RESPite/Shared/Experiments.cs | 10 +- .../APITypes/RedisArrayEntry.cs | 1 - .../APITypes/RedisArrayIndex.cs | 1 - .../APITypes/RedisArrayRange.cs | 1 - .../APITypes/StreamInfo.cs | 6 - src/StackExchange.Redis/ArrayGrepRequest.cs | 2 - src/StackExchange.Redis/ArrayInfo.cs | 1 - src/StackExchange.Redis/Enums/Aggregate.cs | 1 - .../Enums/ArrayOperation.cs | 1 - .../Enums/IncrementOptions.cs | 1 - src/StackExchange.Redis/Enums/RedisType.cs | 1 - .../Enums/StreamNackMode.cs | 1 - src/StackExchange.Redis/HotKeys.cs | 10 - .../Increx.StringIncrementResult.cs | 1 - .../Interfaces/IDatabase.Arrays.cs | 23 - .../Interfaces/IDatabase.cs | 8 - .../Interfaces/IDatabaseAsync.Arrays.cs | 23 - .../Interfaces/IDatabaseAsync.cs | 8 - .../KeyNotification.SubKeys.cs | 3 - src/StackExchange.Redis/KeyNotification.cs | 5 - .../KeyNotificationType.cs | 3 - .../PublicAPI/PublicAPI.Shipped.txt | 576 +++++++++--------- src/StackExchange.Redis/RedisChannel.cs | 9 - .../StreamConfiguration.cs | 1 - src/StackExchange.Redis/StreamIdempotentId.cs | 1 - src/StackExchange.Redis/ValueCondition.cs | 11 - 27 files changed, 297 insertions(+), 415 deletions(-) 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(),