小编Nab*_*bhi的帖子

提高Redis性能减少超时异常

我在 Centos 服务器上有一个 Redis 数据库,并连接了 3 个 Windows 服务器,每秒大约 1000 次读/写,所有这些服务器都在同一个本地 LAN 上,因此 ping 时间不到 1 毫秒。问题是至少 5% 的读取操作会超时,而我在“syncTimeout=15”的读取操作中读取最多 3KB 数据,这远远超过了网络延迟。

我在Windows 10上的bash上安装了Redis,并模拟了该问题。我也不再写操作了。然而,0.5% 的超时问题仍然存在,但没有网络延迟。我还在 LAN 中使用 Centos 服务器来模拟该问题,在本例中,我需要 100 毫秒的“syncTimeout”来确保超时量小于 1%。我考虑使用一些字典来缓存来自 Redis 的数据,因此不需要逐项请求,并且我可以利用管道。但我遇到了StackRedis.L1,它是作为Redis的L1缓存开发的,并且它对更新L1缓存没有信心。

这是我模拟问题的代码:

    var connectionMulti = ConnectionMultiplexer.Connect(
            "127.0.0.1:6379,127.0.0.1:6380,allowAdmin=true,syncTimeout=15");

    // 100,000 keys
    var testKeys = File.ReadAllLines("D:\\RedisTestKeys.txt");

    for (var i = 0; i < 3; i++)
    {
        var safeI = i;
        Task.Factory.StartNew(() =>
        {
            var serverName = $"server {safeI + 1}";
            var stringDatabase = connectionMulti.GetDatabase(12);
            PerformanceTest($"{serverName} -> String: ",
                key => …
Run Code Online (Sandbox Code Playgroud)

c# performance redis

5
推荐指数
1
解决办法
776
查看次数

标签 统计

c# ×1

performance ×1

redis ×1