重要改变:修复一次运行全部测试时,卡死失败的错误。

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

@ -17,11 +17,6 @@ namespace RedisStudyTest
{
public class RedisHelperTest
{
[Fact]
public void MyTest()
{
Assert.True(1 < 99);
}
[Fact]
public void GetRedisDatabaseTest()
@ -36,18 +31,9 @@ namespace RedisStudyTest
[Fact]
public void GetRedisDatabaseTest2()
{
//ConfigurationOptions options = new ConfigurationOptions();
//options.DefaultDatabase = 1;
//options.EndPoints.Add("127.0.0.1", 6379);
//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);
var db = RedisHelper.GetConnectionMultiplexer();
var db2 = RedisHelper.GetConnectionMultiplexer();
Assert.Equal(db, db2);
}
[Fact]

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

Loading…
Cancel
Save