Redis - StackExchange.Redis - 使用 C# 驱动程序批量插入时缺少键
Redis - StackExchange.Redis - Missing Keys on Mass Insertion using C# Driver
我当前的环境 - .NET Core 2.1,Redis-Server/cli 3.2 on Windows Server
我目前正尝试在我的 .NET 核心控制台应用程序中使用 StackExchange.Redis 驱动程序将大量密钥插入 redis,如下所示:
foreach (var item in collection)
{
var key = item.SomeKey;
var value = item.SomeValue;
//Tried Both Async and Sync
redisDatabase.StringSetAsync(key, value);
redisDatabase.StringSet(key, value);
}
记录以 1000
为一组传递给 for-each
我的 collection 有接近 285000 条记录,因此将这么多记录插入 redis-server,但完成后我只能在数据库中看到 250000 条奇数记录(在 运行 之后INFO redis-cli 命令)。
为什么会这样?
我知道对于大量插入,最好使用 redis 协议,但这是我现在需要的临时解决方案
原来redis只接受这么多set请求,一次处理。
在我的案例中,最终的解决方案是限制从我的应用程序中触发的设置命令的数量。
最初它被设置为每次迭代 1000 个请求,当它被更改为 500 时它插入所有而不遗漏任何插入。
我当前的环境 - .NET Core 2.1,Redis-Server/cli 3.2 on Windows Server
我目前正尝试在我的 .NET 核心控制台应用程序中使用 StackExchange.Redis 驱动程序将大量密钥插入 redis,如下所示:
foreach (var item in collection)
{
var key = item.SomeKey;
var value = item.SomeValue;
//Tried Both Async and Sync
redisDatabase.StringSetAsync(key, value);
redisDatabase.StringSet(key, value);
}
记录以 1000
为一组传递给 for-each我的 collection 有接近 285000 条记录,因此将这么多记录插入 redis-server,但完成后我只能在数据库中看到 250000 条奇数记录(在 运行 之后INFO redis-cli 命令)。
为什么会这样?
我知道对于大量插入,最好使用 redis 协议,但这是我现在需要的临时解决方案
原来redis只接受这么多set请求,一次处理。 在我的案例中,最终的解决方案是限制从我的应用程序中触发的设置命令的数量。
最初它被设置为每次迭代 1000 个请求,当它被更改为 500 时它插入所有而不遗漏任何插入。