重要改变:修复一次运行全部测试时,卡死失败的错误,并大大缩短测试时间(分钟到秒)

原因猜测:每个测试,获取一个新连接,导致TCP/IP连接数过大,出现Redis超时。
解决:获取IConnectionMultiplexer,使用单例方法,多扣位共享一个连接。
master
bicijinlian 7 years ago committed by ruyu
parent eb47cdbed9
commit 9df8d6d12a

@ -17,11 +17,6 @@ namespace RedisStudyTest
{ {
public class RedisHelperTest public class RedisHelperTest
{ {
[Fact]
public void MyTest()
{
Assert.True(1 < 99);
}
[Fact] [Fact]
public void GetRedisDatabaseTest() public void GetRedisDatabaseTest()
@ -36,18 +31,9 @@ namespace RedisStudyTest
[Fact] [Fact]
public void GetRedisDatabaseTest2() public void GetRedisDatabaseTest2()
{ {
//ConfigurationOptions options = new ConfigurationOptions(); var db = RedisHelper.GetConnectionMultiplexer();
//options.DefaultDatabase = 1; var db2 = RedisHelper.GetConnectionMultiplexer();
//options.EndPoints.Add("127.0.0.1", 6379); Assert.Equal(db, db2);
//IConnectionMultiplexer connection = ConnectionMultiplexer.Connect(options);
//var mock = new Mock<IConnectionMultiplexer>(options);
////mock.Setup(a => a.GetDatabase(1)).Returns(IDatabase);
//var myDB = mock.Object;
////Assert.Equal("127.0.0.1", myDB.Multiplexer.Configuration);
} }
[Fact] [Fact]

@ -13,24 +13,37 @@ namespace RedisStuy
/// <summary> /// <summary>
/// 客户端操作 /// 客户端操作
/// </summary> /// </summary>
public static class RedisHelper public sealed class RedisHelper
{ {
/// <summary>
/// 获取 Redis连接 private static readonly IConnectionMultiplexer connectionMultiplexer = IniConnection();
/// (此为共享和线程安全的,可以设计成单例模式)
/// </summary> private static IConnectionMultiplexer IniConnection()
public static IConnectionMultiplexer GetConnectionMultiplexer()
{ {
ConfigurationOptions options = new ConfigurationOptions(); ConfigurationOptions options = new ConfigurationOptions();
options.KeepAlive = 200;
options.DefaultDatabase = 1; options.DefaultDatabase = 1;
options.AllowAdmin = true; options.AllowAdmin = true;
options.EndPoints.Add("127.0.0.1", 6379); options.EndPoints.Add("127.0.0.1", 6379);
IConnectionMultiplexer connection = ConnectionMultiplexer.Connect(options); IConnectionMultiplexer connection = ConnectionMultiplexer.Connect(options);
return connection; return connection;
} }
private RedisHelper()
{
}
/// <summary>
/// 获取 Redis连接
/// (此为共享和线程安全的,可以设计成单例模式)
/// </summary>
public static IConnectionMultiplexer GetConnectionMultiplexer()
{
return connectionMultiplexer;
}
/// <summary> /// <summary>
/// 获取 默认Reids服务器 /// 获取 默认Reids服务器

Loading…
Cancel
Save