diff --git a/src/NatsDistributedCache/NatsCache.cs b/src/NatsDistributedCache/NatsCache.cs
index dc84cdf..57f1c53 100644
--- a/src/NatsDistributedCache/NatsCache.cs
+++ b/src/NatsDistributedCache/NatsCache.cs
@@ -25,6 +25,14 @@ public class CacheEntry
public byte[]? Data { get; set; }
}
+///
+/// JsonSerializerContext for CacheEntry
+///
+[JsonSerializable(typeof(CacheEntry))]
+public partial class CacheEntryJsonContext : JsonSerializerContext
+{
+}
+
///
/// Distributed cache implementation using NATS Key-Value Store.
///
@@ -364,8 +372,3 @@ await kvStore.DeleteAsync(GetPrefixedKey(key), natsKvDeleteOpts, cancellationTok
.ConfigureAwait(false);
}
}
-
-[JsonSerializable(typeof(CacheEntry))]
-internal partial class CacheEntryJsonContext : JsonSerializerContext
-{
-}
diff --git a/test/IntegrationTests/Cache/HybridCacheSetAndRemoveTests.cs b/test/IntegrationTests/Cache/HybridCacheSetAndRemoveTests.cs
new file mode 100644
index 0000000..6c1e792
--- /dev/null
+++ b/test/IntegrationTests/Cache/HybridCacheSetAndRemoveTests.cs
@@ -0,0 +1,89 @@
+using System.Buffers;
+using System.Globalization;
+using System.Text;
+using Microsoft.Extensions.Caching.Hybrid;
+using NATS.Client.Core;
+using NATS.Client.KeyValueStore;
+using NATS.Net;
+using StreamJsonRpc;
+
+namespace CodeCargo.Nats.DistributedCache.IntegrationTests.Cache;
+
+public class HybridCacheGetSetRemoveTests(NatsIntegrationFixture fixture) : TestBase(fixture)
+{
+ [Fact]
+ public async Task HybridCacheGetSetRemoveTest()
+ {
+ // Arrange
+ var key = MethodKey();
+ var value = Encoding.UTF8.GetBytes($"test-value-{Guid.NewGuid()}");
+ var options = new HybridCacheEntryOptions
+ {
+ Expiration = TimeSpan.FromMinutes(10)
+ };
+
+ // Assert - Verify the value is not stored in NATS KV store
+ var kvStore = await NatsConnection.CreateKeyValueStoreContext().GetStoreAsync("cache");
+ await Assert.ThrowsAsync(async () => await kvStore.GetEntryAsync(key));
+
+ // Act
+ await HybridCache.SetAsync(key, value, options);
+
+ // Assert - Verify the value is stored in NATS KV store
+ var kvEntry = await kvStore.GetEntryAsync(key);
+ Assert.NotNull(kvEntry.Value);
+
+ // Assert - Verify the value is retrievable from hybrid cache
+ var result = await HybridCache.GetOrCreateAsync(key, async ct => await Task.FromResult(Array.Empty()));
+ Assert.NotEmpty(result);
+ Assert.Equal(value, result);
+
+ // Act
+ await HybridCache.RemoveAsync(key);
+
+ // Assert - Verify the value is not stored in NATS KV store
+ await Assert.ThrowsAsync(async () => await kvStore.GetEntryAsync(key));
+
+ // Assert - Verify the value is not retrievable from hybrid cache
+ result = await HybridCache.GetOrCreateAsync(key, async ct => await Task.FromResult(Array.Empty()));
+ Assert.Empty(result);
+ }
+
+ [Fact]
+ public async Task HybridCacheSerializesDateTime()
+ {
+ // Arrange
+ var key = MethodKey();
+ const string invariant = "2025-05-15T17:18:58.7503097Z";
+ var date = DateTime.Parse(invariant, CultureInfo.InvariantCulture);
+
+ var options = new HybridCacheEntryOptions
+ {
+ Expiration = TimeSpan.FromMinutes(10)
+ };
+
+ // Act - Store the complex object in the cache
+ await HybridCache.SetAsync(key, date, options);
+
+ // Assert - date is serialized as expected
+ var writer = new ArrayBufferWriter();
+ new NatsUtf8PrimitivesSerializer().Serialize(writer, date);
+ var serializedDateString = Encoding.ASCII.GetString(writer.WrittenSpan.ToArray());
+
+ var kvStore = await NatsConnection.CreateKeyValueStoreContext().GetStoreAsync("cache");
+ NatsJsonContextSerializer cacheEntrySerializer = new(CacheEntryJsonContext.Default);
+ var kvEntry = await kvStore.GetEntryAsync(key, serializer: cacheEntrySerializer);
+ Assert.NotNull(kvEntry.Value?.Data);
+ var storedDateString = Encoding.ASCII.GetString(kvEntry.Value.Data);
+
+ // HybridCache adds additional data to the front of the serialized value, so we're matching only the relevant data
+ Assert.Contains(serializedDateString, storedDateString);
+
+ // Assert - date is deserialized as expected
+ var retrieved = await HybridCache.GetOrCreateAsync(key, async ct => await Task.FromResult(DateTime.UnixEpoch));
+ Assert.Equal(date, retrieved);
+
+ // Cleanup
+ await HybridCache.RemoveAsync(key);
+ }
+}
diff --git a/test/IntegrationTests/TestBase.cs b/test/IntegrationTests/TestBase.cs
index e57d265..a20255a 100644
--- a/test/IntegrationTests/TestBase.cs
+++ b/test/IntegrationTests/TestBase.cs
@@ -1,9 +1,12 @@
using System.Runtime.CompilerServices;
+using CodeCargo.Nats.DistributedCache.TestUtils;
using CodeCargo.Nats.DistributedCache.TestUtils.Services.Logging;
using Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.Caching.Hybrid;
using Microsoft.Extensions.Logging;
using NATS.Client.Core;
using NATS.Client.JetStream.Models;
+using NATS.Client.KeyValueStore;
using NATS.Net;
namespace CodeCargo.Nats.DistributedCache.IntegrationTests;
@@ -41,6 +44,7 @@ protected TestBase(NatsIntegrationFixture fixture)
// Add the cache
services.AddNatsDistributedCache(options => options.BucketName = "cache");
+ services.AddHybridCacheTestClient();
// Build service provider
ServiceProvider = services.BuildServiceProvider();
@@ -61,6 +65,11 @@ protected TestBase(NatsIntegrationFixture fixture)
///
protected IDistributedCache Cache => ServiceProvider.GetRequiredService();
+ ///
+ /// Gets the cache from the service provider
+ ///
+ protected HybridCache HybridCache => ServiceProvider.GetRequiredService();
+
///
/// Purge stream before test run
///
diff --git a/test/IntegrationTests/packages.linux-x64.lock.json b/test/IntegrationTests/packages.linux-x64.lock.json
index 5813dfd..987977f 100644
--- a/test/IntegrationTests/packages.linux-x64.lock.json
+++ b/test/IntegrationTests/packages.linux-x64.lock.json
@@ -317,6 +317,29 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Transitive",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Compliance.Abstractions": {
"type": "Transitive",
"resolved": "9.4.0",
@@ -1074,6 +1097,7 @@
"type": "Project",
"dependencies": {
"CodeCargo.Nats.DistributedCache": "[1.0.0, )",
+ "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
"xunit.v3.assert": "[2.0.2, )",
diff --git a/test/IntegrationTests/packages.osx-arm64.lock.json b/test/IntegrationTests/packages.osx-arm64.lock.json
index 4d0c6d1..16bcfb7 100644
--- a/test/IntegrationTests/packages.osx-arm64.lock.json
+++ b/test/IntegrationTests/packages.osx-arm64.lock.json
@@ -317,6 +317,29 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Transitive",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Compliance.Abstractions": {
"type": "Transitive",
"resolved": "9.4.0",
@@ -1074,6 +1097,7 @@
"type": "Project",
"dependencies": {
"CodeCargo.Nats.DistributedCache": "[1.0.0, )",
+ "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
"xunit.v3.assert": "[2.0.2, )",
diff --git a/test/IntegrationTests/packages.win-x64.lock.json b/test/IntegrationTests/packages.win-x64.lock.json
index 6f21006..d7512b1 100644
--- a/test/IntegrationTests/packages.win-x64.lock.json
+++ b/test/IntegrationTests/packages.win-x64.lock.json
@@ -317,6 +317,29 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Transitive",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Compliance.Abstractions": {
"type": "Transitive",
"resolved": "9.4.0",
@@ -1074,6 +1097,7 @@
"type": "Project",
"dependencies": {
"CodeCargo.Nats.DistributedCache": "[1.0.0, )",
+ "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
"xunit.v3.assert": "[2.0.2, )",
diff --git a/test/TestUtils/NatsTestExtensions.cs b/test/TestUtils/NatsTestExtensions.cs
index 46fea13..f486080 100644
--- a/test/TestUtils/NatsTestExtensions.cs
+++ b/test/TestUtils/NatsTestExtensions.cs
@@ -13,4 +13,16 @@ options with
Url = natsConnectionString,
RequestReplyMode = NatsRequestReplyMode.Direct,
});
+
+ public static IServiceCollection AddHybridCacheTestClient(this IServiceCollection services)
+ {
+ // Add HybridCache
+ var hybridCacheServices = services.AddHybridCache();
+
+ // Use NATS Serializer for HybridCache
+ var natsOpts = NatsOpts.Default;
+ hybridCacheServices.AddSerializerFactory(
+ natsOpts.SerializerRegistry.ToHybridCacheSerializerFactory());
+ return services;
+ }
}
diff --git a/test/TestUtils/TestUtils.csproj b/test/TestUtils/TestUtils.csproj
index 4af9535..0c13076 100644
--- a/test/TestUtils/TestUtils.csproj
+++ b/test/TestUtils/TestUtils.csproj
@@ -5,6 +5,7 @@
+
diff --git a/test/TestUtils/packages.linux-x64.lock.json b/test/TestUtils/packages.linux-x64.lock.json
index c41655f..7890c9e 100644
--- a/test/TestUtils/packages.linux-x64.lock.json
+++ b/test/TestUtils/packages.linux-x64.lock.json
@@ -2,6 +2,18 @@
"version": 1,
"dependencies": {
"net8.0": {
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Direct",
+ "requested": "[9.4.0, )",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Logging": {
"type": "Direct",
"requested": "[9.0.4, )",
@@ -66,6 +78,18 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
diff --git a/test/TestUtils/packages.osx-arm64.lock.json b/test/TestUtils/packages.osx-arm64.lock.json
index c41655f..7890c9e 100644
--- a/test/TestUtils/packages.osx-arm64.lock.json
+++ b/test/TestUtils/packages.osx-arm64.lock.json
@@ -2,6 +2,18 @@
"version": 1,
"dependencies": {
"net8.0": {
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Direct",
+ "requested": "[9.4.0, )",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Logging": {
"type": "Direct",
"requested": "[9.0.4, )",
@@ -66,6 +78,18 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
diff --git a/test/TestUtils/packages.win-x64.lock.json b/test/TestUtils/packages.win-x64.lock.json
index c41655f..7890c9e 100644
--- a/test/TestUtils/packages.win-x64.lock.json
+++ b/test/TestUtils/packages.win-x64.lock.json
@@ -2,6 +2,18 @@
"version": 1,
"dependencies": {
"net8.0": {
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Direct",
+ "requested": "[9.4.0, )",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Logging": {
"type": "Direct",
"requested": "[9.0.4, )",
@@ -66,6 +78,18 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
diff --git a/test/UnitTests/packages.linux-x64.lock.json b/test/UnitTests/packages.linux-x64.lock.json
index 5e11b64..2d24c70 100644
--- a/test/UnitTests/packages.linux-x64.lock.json
+++ b/test/UnitTests/packages.linux-x64.lock.json
@@ -73,6 +73,29 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Transitive",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
@@ -382,6 +405,7 @@
"type": "Project",
"dependencies": {
"CodeCargo.Nats.DistributedCache": "[1.0.0, )",
+ "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
"xunit.v3.assert": "[2.0.2, )",
diff --git a/test/UnitTests/packages.osx-arm64.lock.json b/test/UnitTests/packages.osx-arm64.lock.json
index 5e11b64..2d24c70 100644
--- a/test/UnitTests/packages.osx-arm64.lock.json
+++ b/test/UnitTests/packages.osx-arm64.lock.json
@@ -73,6 +73,29 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Transitive",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
@@ -382,6 +405,7 @@
"type": "Project",
"dependencies": {
"CodeCargo.Nats.DistributedCache": "[1.0.0, )",
+ "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
"xunit.v3.assert": "[2.0.2, )",
diff --git a/test/UnitTests/packages.win-x64.lock.json b/test/UnitTests/packages.win-x64.lock.json
index 5e11b64..2d24c70 100644
--- a/test/UnitTests/packages.win-x64.lock.json
+++ b/test/UnitTests/packages.win-x64.lock.json
@@ -73,6 +73,29 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Transitive",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "8.0.0",
@@ -382,6 +405,7 @@
"type": "Project",
"dependencies": {
"CodeCargo.Nats.DistributedCache": "[1.0.0, )",
+ "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
"xunit.v3.assert": "[2.0.2, )",
diff --git a/util/PerfTest/packages.linux-x64.lock.json b/util/PerfTest/packages.linux-x64.lock.json
index 346ec48..babef24 100644
--- a/util/PerfTest/packages.linux-x64.lock.json
+++ b/util/PerfTest/packages.linux-x64.lock.json
@@ -301,6 +301,29 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Transitive",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Compliance.Abstractions": {
"type": "Transitive",
"resolved": "9.4.0",
@@ -966,6 +989,7 @@
"type": "Project",
"dependencies": {
"CodeCargo.Nats.DistributedCache": "[1.0.0, )",
+ "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
"xunit.v3.assert": "[2.0.2, )",
diff --git a/util/PerfTest/packages.osx-arm64.lock.json b/util/PerfTest/packages.osx-arm64.lock.json
index cc3d194..0b0278b 100644
--- a/util/PerfTest/packages.osx-arm64.lock.json
+++ b/util/PerfTest/packages.osx-arm64.lock.json
@@ -301,6 +301,29 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Transitive",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Compliance.Abstractions": {
"type": "Transitive",
"resolved": "9.4.0",
@@ -966,6 +989,7 @@
"type": "Project",
"dependencies": {
"CodeCargo.Nats.DistributedCache": "[1.0.0, )",
+ "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
"xunit.v3.assert": "[2.0.2, )",
diff --git a/util/PerfTest/packages.win-x64.lock.json b/util/PerfTest/packages.win-x64.lock.json
index 0e84cdf..55d0a36 100644
--- a/util/PerfTest/packages.win-x64.lock.json
+++ b/util/PerfTest/packages.win-x64.lock.json
@@ -301,6 +301,29 @@
"Microsoft.Extensions.Primitives": "9.0.4"
}
},
+ "Microsoft.Extensions.Caching.Hybrid": {
+ "type": "Transitive",
+ "resolved": "9.4.0",
+ "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Caching.Memory": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "9.0.4",
+ "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ }
+ },
"Microsoft.Extensions.Compliance.Abstractions": {
"type": "Transitive",
"resolved": "9.4.0",
@@ -966,6 +989,7 @@
"type": "Project",
"dependencies": {
"CodeCargo.Nats.DistributedCache": "[1.0.0, )",
+ "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )",
"Microsoft.Extensions.Logging": "[9.0.4, )",
"NATS.Net": "[2.6.0, )",
"xunit.v3.assert": "[2.0.2, )",