Skip to content

Commit 5147bb8

Browse files
committed
Test fusion cache with Redis provider
1 parent c5a2ac9 commit 5147bb8

File tree

3 files changed

+152
-128
lines changed

3 files changed

+152
-128
lines changed

Directory.Packages.props

Lines changed: 103 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -1,128 +1,105 @@
11
<Project>
2-
<ItemGroup>
3-
<PackageVersion Include="CacheManager.Core" Version="2.0.0"/>
4-
<PackageVersion Include="CacheManager.StackExchange.Redis" Version="2.0.0"/>
5-
<PackageVersion Include="CacheManager.Microsoft.Extensions.Caching.Memory" Version="2.0.0"/>
6-
<PackageVersion Include="CacheManager.Serialization.Json" Version="2.0.0"/>
7-
8-
<PackageVersion Include="BenchmarkDotNet" Version="0.15.0"/>
9-
10-
<PackageVersion Include="EasyCaching.Core" Version="[1.9.2,)"/>
11-
<PackageVersion Include="EasyCaching.InMemory" Version="1.9.2"/>
12-
<PackageVersion Include="EasyCaching.Redis" Version="1.9.2"/>
13-
<PackageVersion Include="EasyCaching.HybridCache" Version="1.9.2"/>
14-
<PackageVersion Include="EasyCaching.Bus.Redis" Version="1.9.2"/>
15-
<PackageVersion Include="EasyCaching.Serialization.MessagePack" Version="1.9.2"/>
16-
<PackageVersion Include="EasyCaching.Serialization.SystemTextJson" Version="1.9.2"/>
17-
18-
<PackageVersion Include="ZiggyCreatures.FusionCache" Version="2.2.0"/>
19-
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="9.3.0"/>
20-
21-
<PackageVersion Include="MessagePack" Version="3.1.4"/>
22-
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3"/>
23-
24-
<PackageVersion Include="StackExchange.Redis" Version="2.8.41"/>
25-
26-
<PackageVersion Include="coverlet.collector" Version="6.0.4"/>
27-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1"/>
28-
<PackageVersion Include="MSTest.TestFramework" Version="3.9.1"/>
29-
<PackageVersion Include="MSTest.TestAdapter" Version="3.9.1"/>
30-
<PackageVersion Include="Moq" Version="4.20.72"/>
31-
<PackageVersion Include="xunit" Version="2.9.3"/>
32-
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.1"/>
33-
</ItemGroup>
34-
35-
<ItemGroup>
36-
<PackageVersion Include="Meziantou.Analyzer" Version="2.0.202" />
37-
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.12.0.118525" />
38-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Analyzers" Version="9.0.0"/>
39-
</ItemGroup>
40-
41-
<ItemGroup>
42-
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
43-
<PackageVersion Include="AsyncKeyedLock" Version="7.1.6"/>
44-
</ItemGroup>
45-
46-
<ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
47-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[3.1,4)"/>
48-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1,4)"/>
49-
</ItemGroup>
50-
51-
<ItemGroup Condition=" ('$(TargetFramework)' == 'netstandard2.0')">
52-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[3.1,4)"/>
53-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1,4)"/>
54-
</ItemGroup>
55-
56-
<ItemGroup Condition="('$(TargetFramework)' == 'netcoreapp3.1')">
57-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[3.1,6)"/>
58-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1,6)"/>
59-
</ItemGroup>
60-
61-
<ItemGroup Condition="('$(TargetFramework)' == 'netstandard2.1')">
62-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[5,)"/>
63-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[5,)"/>
64-
</ItemGroup>
65-
66-
<ItemGroup Condition="('$(TargetFramework)' == 'net5.0')">
67-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[5,)"/>
68-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[5,)"/>
69-
</ItemGroup>
70-
71-
<ItemGroup Condition="('$(TargetFramework)' == 'net6.0')">
72-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[6,)"/>
73-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[6,)"/>
74-
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="[6.0.2,)"/>
75-
</ItemGroup>
76-
77-
<ItemGroup Condition="('$(TargetFramework)' == 'net7.0')">
78-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[7,)"/>
79-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[7,)"/>
80-
</ItemGroup>
81-
82-
<ItemGroup Condition="('$(TargetFramework)' == 'net8.0')">
83-
<PackageVersion Include="System.IO.Hashing" Version="[8.0.0,)"/>
84-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[8.0.0,)"/>
85-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[8.0.0,)"/>
86-
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="[8.0.1,)"/>
87-
</ItemGroup>
88-
89-
<ItemGroup Condition="('$(TargetFramework)' == 'net9.0')">
90-
<PackageVersion Include="System.IO.Hashing" Version="[9.0.0,)"/>
91-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[9.0.0,)"/>
92-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[9.0.0,)"/>
93-
94-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Abstractions" Version="9.0.0" />
95-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0"/>
96-
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.0"/>
97-
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0"/>
98-
<PackageVersion Include="Lamar.Microsoft.DependencyInjection" Version="14.0.1"/>
99-
100-
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.0"/>
101-
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.0"/>
102-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0"/>
103-
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="9.0.0"/>
104-
<PackageVersion Include="Microsoft.Extensions.Logging.Debug" Version="9.0.0"/>
105-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0" />
106-
107-
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.0"/>
108-
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.0"/>
109-
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.0"/>
110-
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="9.0.0"/>
111-
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.0" />
112-
113-
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.0" />
114-
<PackageVersion Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.0"/>
115-
116-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0"/>
117-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="9.0.0"/>
118-
119-
<PackageVersion Include="Microsoft.SqlServer.Types" Version="160.1000.6"/>
120-
<PackageVersion Include="System.Data.SqlClient" Version="4.9.0"/>
121-
122-
<PackageVersion Include="MySql.EntityFrameworkCore" Version="9.0.0"/>
123-
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.0"/>
124-
125-
<PackageVersion Include="EFCore.BulkExtensions" Version="9.0.1"/>
126-
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite" Version="9.0.0"/>
127-
</ItemGroup>
2+
<ItemGroup>
3+
<PackageVersion Include="CacheManager.Core" Version="2.0.0" />
4+
<PackageVersion Include="CacheManager.StackExchange.Redis" Version="2.0.0" />
5+
<PackageVersion Include="CacheManager.Microsoft.Extensions.Caching.Memory" Version="2.0.0" />
6+
<PackageVersion Include="CacheManager.Serialization.Json" Version="2.0.0" />
7+
<PackageVersion Include="BenchmarkDotNet" Version="0.15.0" />
8+
<PackageVersion Include="EasyCaching.Core" Version="[1.9.2,)" />
9+
<PackageVersion Include="EasyCaching.InMemory" Version="1.9.2" />
10+
<PackageVersion Include="EasyCaching.Redis" Version="1.9.2" />
11+
<PackageVersion Include="EasyCaching.HybridCache" Version="1.9.2" />
12+
<PackageVersion Include="EasyCaching.Bus.Redis" Version="1.9.2" />
13+
<PackageVersion Include="EasyCaching.Serialization.MessagePack" Version="1.9.2" />
14+
<PackageVersion Include="EasyCaching.Serialization.SystemTextJson" Version="1.9.2" />
15+
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.6" />
16+
<PackageVersion Include="ZiggyCreatures.FusionCache" Version="2.2.0" />
17+
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="9.3.0" />
18+
<PackageVersion Include="MessagePack" Version="3.1.4" />
19+
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
20+
<PackageVersion Include="StackExchange.Redis" Version="2.8.41" />
21+
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
22+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
23+
<PackageVersion Include="MSTest.TestFramework" Version="3.9.1" />
24+
<PackageVersion Include="MSTest.TestAdapter" Version="3.9.1" />
25+
<PackageVersion Include="Moq" Version="4.20.72" />
26+
<PackageVersion Include="xunit" Version="2.9.3" />
27+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.1" />
28+
<PackageVersion Include="ZiggyCreatures.FusionCache.Serialization.NewtonsoftJson" Version="2.3.0" />
29+
</ItemGroup>
30+
<ItemGroup>
31+
<PackageVersion Include="Meziantou.Analyzer" Version="2.0.202" />
32+
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.12.0.118525" />
33+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Analyzers" Version="9.0.0" />
34+
</ItemGroup>
35+
<ItemGroup>
36+
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
37+
<PackageVersion Include="AsyncKeyedLock" Version="7.1.6" />
38+
</ItemGroup>
39+
<ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
40+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[3.1,4)" />
41+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1,4)" />
42+
</ItemGroup>
43+
<ItemGroup Condition=" ('$(TargetFramework)' == 'netstandard2.0')">
44+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[3.1,4)" />
45+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1,4)" />
46+
</ItemGroup>
47+
<ItemGroup Condition="('$(TargetFramework)' == 'netcoreapp3.1')">
48+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[3.1,6)" />
49+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1,6)" />
50+
</ItemGroup>
51+
<ItemGroup Condition="('$(TargetFramework)' == 'netstandard2.1')">
52+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[5,)" />
53+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[5,)" />
54+
</ItemGroup>
55+
<ItemGroup Condition="('$(TargetFramework)' == 'net5.0')">
56+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[5,)" />
57+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[5,)" />
58+
</ItemGroup>
59+
<ItemGroup Condition="('$(TargetFramework)' == 'net6.0')">
60+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[6,)" />
61+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[6,)" />
62+
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="[6.0.2,)" />
63+
</ItemGroup>
64+
<ItemGroup Condition="('$(TargetFramework)' == 'net7.0')">
65+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[7,)" />
66+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[7,)" />
67+
</ItemGroup>
68+
<ItemGroup Condition="('$(TargetFramework)' == 'net8.0')">
69+
<PackageVersion Include="System.IO.Hashing" Version="[8.0.0,)" />
70+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[8.0.0,)" />
71+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[8.0.0,)" />
72+
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="[8.0.1,)" />
73+
</ItemGroup>
74+
<ItemGroup Condition="('$(TargetFramework)' == 'net9.0')">
75+
<PackageVersion Include="System.IO.Hashing" Version="[9.0.0,)" />
76+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[9.0.0,)" />
77+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[9.0.0,)" />
78+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Abstractions" Version="9.0.0" />
79+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0" />
80+
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.0" />
81+
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" />
82+
<PackageVersion Include="Lamar.Microsoft.DependencyInjection" Version="14.0.1" />
83+
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.0" />
84+
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.0" />
85+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0" />
86+
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="9.0.0" />
87+
<PackageVersion Include="Microsoft.Extensions.Logging.Debug" Version="9.0.0" />
88+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0" />
89+
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.0" />
90+
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
91+
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.0" />
92+
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="9.0.0" />
93+
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.0" />
94+
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.0" />
95+
<PackageVersion Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.0" />
96+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0" />
97+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="9.0.0" />
98+
<PackageVersion Include="Microsoft.SqlServer.Types" Version="160.1000.6" />
99+
<PackageVersion Include="System.Data.SqlClient" Version="4.9.0" />
100+
<PackageVersion Include="MySql.EntityFrameworkCore" Version="9.0.0" />
101+
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.0" />
102+
<PackageVersion Include="EFCore.BulkExtensions" Version="9.0.1" />
103+
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite" Version="9.0.0" />
104+
</ItemGroup>
128105
</Project>

src/Tests/Issues/Issue123WithMessagePack/EFServiceProvider.cs

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
using EFCoreSecondLevelCacheInterceptor;
22
using Issue123WithMessagePack.DataLayer;
33
using Microsoft.EntityFrameworkCore;
4+
using Microsoft.Extensions.Caching.StackExchangeRedis;
45
using Microsoft.Extensions.Configuration;
56
using Microsoft.Extensions.DependencyInjection;
67
using Microsoft.Extensions.Logging;
78
using StackExchange.Redis;
9+
using ZiggyCreatures.Caching.Fusion;
10+
using ZiggyCreatures.Caching.Fusion.Serialization.NewtonsoftJson;
811

912
namespace Issue123WithMessagePack;
1013

@@ -73,11 +76,49 @@ private static IServiceProvider getServiceProvider()
7376
});*/
7477
#pragma warning restore S125
7578

79+
var distributedCache = new RedisCache(new RedisCacheOptions
80+
{
81+
ConfigurationOptions = new ConfigurationOptions
82+
{
83+
EndPoints =
84+
{
85+
"127.0.0.1:6379"
86+
},
87+
AllowAdmin = true,
88+
ConnectTimeout = 10000
89+
}
90+
});
91+
92+
var jsonSerializer = new FusionCacheNewtonsoftJsonSerializer();
93+
94+
services.AddFusionCache()
95+
.WithDistributedCache(distributedCache, jsonSerializer)
96+
.WithNewtonsoftJsonSerializer()
97+
.WithOptions(options =>
98+
{
99+
options.DefaultEntryOptions = new FusionCacheEntryOptions
100+
{
101+
Duration = TimeSpan.FromMinutes(minutes: 30),
102+
IsFailSafeEnabled = true,
103+
FailSafeMaxDuration = TimeSpan.FromMinutes(minutes: 10),
104+
FailSafeThrottleDuration = TimeSpan.FromMinutes(minutes: 10),
105+
FactorySoftTimeout = TimeSpan.FromMilliseconds(milliseconds: 300),
106+
FactoryHardTimeout = TimeSpan.FromMilliseconds(milliseconds: 1000),
107+
DistributedCacheSoftTimeout = TimeSpan.FromMilliseconds(milliseconds: 500),
108+
DistributedCacheHardTimeout = TimeSpan.FromSeconds(seconds: 5),
109+
AllowBackgroundDistributedCacheOperations = true,
110+
JitterMaxDuration = TimeSpan.FromSeconds(seconds: 2)
111+
};
112+
113+
options.DistributedCacheCircuitBreakerDuration = TimeSpan.FromSeconds(seconds: 5);
114+
});
115+
76116
services.AddEFSecondLevelCache(o =>
77117
{
78118
// o.UseEasyCachingCoreProvider(providerName).ConfigureLogging(enable: true)
79119

80-
o.UseStackExchangeRedisCacheProvider(new ConfigurationOptions
120+
#pragma warning disable S125
121+
/*o.UseStackExchangeRedisCacheProvider(new ConfigurationOptions
81122
{
82123
EndPoints = new EndPointCollection
83124
{
@@ -87,7 +128,10 @@ private static IServiceProvider getServiceProvider()
87128
},
88129
AllowAdmin = true,
89130
ConnectTimeout = 10000
90-
}, TimeSpan.FromMinutes(minutes: 5));
131+
}, TimeSpan.FromMinutes(minutes: 5));*/
132+
#pragma warning restore S125
133+
134+
o.UseFusionCacheProvider();
91135

92136
o.CacheAllQueries(CacheExpirationMode.Absolute, TimeSpan.FromMinutes(minutes: 10));
93137
o.UseCacheKeyPrefix(prefix: "EF_");

src/Tests/Issues/Issue123WithMessagePack/Issue123WithMessagePack.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
</PropertyGroup>
66
<ItemGroup>
77
<ProjectReference Include="..\..\..\EFCoreSecondLevelCacheInterceptor.EasyCaching.Core\EFCoreSecondLevelCacheInterceptor.EasyCaching.Core.csproj"/>
8+
<ProjectReference Include="..\..\..\EFCoreSecondLevelCacheInterceptor.FusionCache\EFCoreSecondLevelCacheInterceptor.FusionCache.csproj"/>
89
<ProjectReference Include="..\..\..\EFCoreSecondLevelCacheInterceptor.StackExchange.Redis\EFCoreSecondLevelCacheInterceptor.StackExchange.Redis.csproj"/>
910
<ProjectReference Include="..\..\..\EFCoreSecondLevelCacheInterceptor\EFCoreSecondLevelCacheInterceptor.csproj"/>
1011
</ItemGroup>
@@ -15,6 +16,7 @@
1516
<PrivateAssets>all</PrivateAssets>
1617
</PackageReference>
1718
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer"/>
19+
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis"/>
1820
<PackageReference Include="Microsoft.Extensions.Logging"/>
1921
<PackageReference Include="Microsoft.Extensions.Logging.Console"/>
2022
<PackageReference Include="Microsoft.Extensions.Configuration.Json"/>
@@ -23,6 +25,7 @@
2325
<PackageReference Include="EasyCaching.Core"/>
2426
<PackageReference Include="EasyCaching.Redis"/>
2527
<PackageReference Include="EasyCaching.Serialization.MessagePack"/>
28+
<PackageReference Include="ZiggyCreatures.FusionCache.Serialization.NewtonsoftJson"/>
2629
</ItemGroup>
2730
<ItemGroup>
2831
<None Include="appsettings.json" CopyToOutputDirectory="PreserveNewest"/>

0 commit comments

Comments
 (0)