Skip to content

Commit d2f8b5a

Browse files
authored
Support configure code-only configuration for StackExchange.Redis bus (#453)
* feat: support configure code-only configuration for StackExchange.Redis bus * fix: remove ConfigurationOptions to string
1 parent 9a1fe17 commit d2f8b5a

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

bus/EasyCaching.Bus.Redis/Configurations/RedisBusOptions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace EasyCaching.Bus.Redis
22
{
33
using EasyCaching.Core.Configurations;
4+
using StackExchange.Redis;
45

56
/// <summary>
67
/// Redis bus options.
@@ -17,5 +18,10 @@ public class RedisBusOptions : BaseRedisOptions
1718
/// Gets or sets the serializer name that should be use in this bus.
1819
/// </summary>
1920
public string SerializerName { get; set; }
21+
22+
/// <summary>
23+
/// Gets or sets the Redis database ConfigurationOptions will use.
24+
/// </summary>
25+
public ConfigurationOptions ConfigurationOptions { get; set; }
2026
}
2127
}

bus/EasyCaching.Bus.Redis/Configurations/RedisSubscriberProvider.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ public ISubscriber GetSubscriber()
4848
/// <returns>The connection multiplexer.</returns>
4949
private ConnectionMultiplexer CreateConnectionMultiplexer()
5050
{
51+
if (_options.ConfigurationOptions != null)
52+
return ConnectionMultiplexer.Connect(_options.ConfigurationOptions);
53+
5154
if (string.IsNullOrWhiteSpace(_options.Configuration))
5255
{
5356
var configurationOptions = new ConfigurationOptions
@@ -67,7 +70,7 @@ private ConnectionMultiplexer CreateConnectionMultiplexer()
6770
configurationOptions.EndPoints.Add(endpoint.Host, endpoint.Port);
6871
}
6972

70-
return ConnectionMultiplexer.Connect(configurationOptions.ToString());
73+
return ConnectionMultiplexer.Connect(configurationOptions);
7174
}
7275
else
7376
{

test/EasyCaching.UnitTests/CachingTests/HybridCachingTest.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
namespace EasyCaching.UnitTests
22
{
3+
using EasyCaching.Bus.Redis;
34
using EasyCaching.Core;
45
using EasyCaching.Core.Bus;
56
using EasyCaching.HybridCache;
67
using FakeItEasy;
78
using Microsoft.Extensions.DependencyInjection;
89
using Microsoft.Extensions.Options;
10+
using Microsoft.VisualBasic.FileIO;
11+
using StackExchange.Redis;
912
using System;
1013
using System.Threading;
1114
using System.Threading.Tasks;
@@ -148,6 +151,30 @@ public void Second_Client_Set_Same_Key_Should_Get_New_Value()
148151
Assert.Equal("value", res.Value);
149152
}
150153

154+
[Fact]
155+
public void WithRedisBus_Use_Configuration_Options_Should_Succeed()
156+
{
157+
IServiceCollection services = new ServiceCollection();
158+
159+
var redisConfig = ConfigurationOptions.Parse("127.0.0.1:6379");
160+
redisConfig.DefaultDatabase = 6;
161+
services.AddEasyCaching(option =>
162+
{
163+
option.WithRedisBus(config =>
164+
{
165+
config.ConfigurationOptions = redisConfig;
166+
config.SerializerName = "myredis";
167+
});
168+
});
169+
IServiceProvider serviceProvider = services.BuildServiceProvider();
170+
var dbProvider = serviceProvider.GetService<IRedisSubscriberProvider>();
171+
Assert.NotNull(dbProvider);
172+
var mul = dbProvider.GetSubscriber().Multiplexer;
173+
174+
Assert.Equal(6, mul.GetDatabase().Database);
175+
}
176+
177+
151178
[Fact]
152179
public void Send_Msg_Throw_Exception_Should_Not_Break()
153180
{

0 commit comments

Comments
 (0)