2

我正在为 Redis 使用 Booksleeve 哈希 API。我正在执行以下操作:

  CurrentConnection.Hashes.Set(0, "item:1", "priority", task.priority.ToString());

  var taskResult = CurrentConnection.Hashes.GetString(0, "item:1", "priority");

  taskResult.Wait();

  var priority = Int32.Parse(taskResult.Result)

但是我得到一个聚合异常:“针对持有错误值的键的 ERR 操作”

我不确定我在这里做错了什么(除了阻止任务:))。

注意:CurrentConnection 是 BookSleeve.RedisConnection 的一个实例

请帮忙!

谢谢

4

1 回答 1

6

这不是 Booksleeve 问题 - 这是一个 redis 错误;实际上,您应该看到的完整错误消息是:

Redis 服务器:针对持有错误类型值的键的 ERR 操作

(我试图澄清这个错误来自redis,而不是Booksleeve)

至于是什么原因造成的:redis中的每个key都有一个指定的类型;字符串、散列、列表等。您不能对非散列的东西使用散列操作。

那么,我的猜测是“item:1”已经存在,但不是散列。我有单元测试可以从 Booksleeve 确认这一点(即有/没有预先存在的非哈希值)。

您可以使用 redis-cli 或任何其他客户端(telnet 工作,在推送时)在 redis 中调查此问题,使用以下命令:

type item:1

(感谢@Sripathi)

于 2012-05-09T06:56:44.150 回答