1

所以我有这个单元测试:

[TestMethod]
public void TestNullString()
{
    String expectedTestValue = null;
    var uid = Guid.NewGuid().ToString();

    redis.Wait(redis.Strings.Set(db, uid, expectedTestValue));
    var testValue = redis.Wait(redis.Strings.GetString(db, uid));

    Assert.AreEqual(expectedTestValue, testValue);
}

结果是超时。这是应该发生的还是我做错了什么?

4

1 回答 1

1

Redis 没有null. 字符串要么(即"abc"""- 零长度字符串很好),要么不是(即密钥不存在)。

这里的“错误”是 BookSleeve 不检查null.String.Set并抛出异常。这将很快得到纠正。

当前发生的情况是代码在将命令写入流时失败 - 特别是,redis二进制协议意味着您在发送数据之前声明参数的数量,即(简化)“SET”,“2”, “key”、“value”——因为它从不写入值,服务器甚至没有机会发送“无效”回复;就服务器而言,它仍在等待一个额外的参数。

于 2012-08-02T07:02:47.393 回答