小编典典

ServiceStack.Redis:无法连接:sPort:

redis

我经常收到ServiceStack.Redis:无法连接:sPort:0或ServiceStack.Redis:无法连接:sPort:50071(或其他端口号)。

当我们的网站繁忙时,似乎会发生这种情况。Redis本身看起来很好,CPU或内存使用量并未真正增加。

我正在使用连接池,并尝试更改超时值,但未成功。

public sealed class RedisConnection
{
    // parameter values are:
    // Config.Settings.RedisPoolSize = 10000
    // Config.Settings.RedisPoolTimeoutSeconds = 2
    // Config.Settings.RemoteCacheServerName = 192.168.10.12
    private static readonly PooledRedisClientManager instance
        = new PooledRedisClientManager(Config.Settings.RedisPoolSize,
                                       Config.Settings.RedisPoolTimeoutSeconds,
                                       new string[] { Config.Settings.RemoteCacheServerName })
        {
            ConnectTimeout = 1500
        };

    static RedisConnection()
    {
    }

    public static PooledRedisClientManager Instance
    {
        get
        {
            return instance;
        }
    }
}

用法是这样的:

public sealed class Caching
{
    public static T GetCacheSingle<T>(string key)
    {
    using (var redisClient = RedisConnection.Instance.GetReadOnlyClient())
    {
            var value = redisClient.Get<byte[]>(key);
            ....
    }
    }
}

阅读 323

收藏
2020-06-20

共1个答案

小编典典

这是由于Redis在Hyper-V上作为虚拟机托管的Ubuntu上运行而导致的延迟问题引起的。

通过移至物理Linux机箱,我们解决了该问题,将延迟降低了45%。

2020-06-20