我正在更新我的 Web 服务以使用最新的BookSleeve库 1.3.38。以前我使用的是 1.1.0.7
在做一些基准测试时,我注意到使用新版本的 BookSleeve 在 Redis 中设置哈希比旧版本慢很多倍。请考虑以下 C# 基准测试代码:
public void TestRedisHashes()
{
int numItems = 1000; // number of hash items to set in redis
int numFields = 30; // number of fields in each redis hash
RedisConnection redis = new RedisConnection("10.0.0.01", 6379);
redis.Open();
// wait until the connection is open
while (!redis.State.Equals(BookSleeve.RedisConnectionBase.ConnectionState.Open)) { }
Stopwatch timer = new Stopwatch();
timer.Start();
for (int i = 0; i < numItems; i++)
{
string key = "test_" + i.ToString();
for (int j = 0; j < numFields; j++)
{
// set a value for each field in the hash
redis.Hashes.Set(0, key, "field_" + j.ToString(), "testdata");
}
redis.Keys.Expire(0, key, 30); // 30 second ttl
}
timer.Stop();
Console.WriteLine("Elapsed time for hash writes: {0} ms", timer.ElapsedMilliseconds);
}
BookSleeve 1.1.0.7 将 1000 个哈希设置到 Redis 2.6 大约需要 20 毫秒,而 1.3.38 大约需要 400 毫秒。慢了 20 倍!我测试过的 BookSleeve 1.3.38 的所有其他部分都与旧版本一样快或更快。我还尝试使用 Redis 2.4 进行相同的测试,并将所有内容包装在事务中。在这两种情况下,我都得到了相似的表现。
有没有其他人注意到这样的事情?我一定做错了什么......我是否使用新版本的 BookSleeve 正确设置了哈希?这是执行即发即弃命令的正确方法吗?我已经将单元测试作为如何使用哈希的示例,但无法找到我正在做的不同之处。在这种情况下,最新版本是否可能更慢?