Redis HashKey错误输出

时间:2013-09-03 04:12:40

标签: c# c#-4.0 redis booksleeve

我使用Boolsleve c#创建了一个HaskKey,我每次都提供一个唯一的字段,我的项目是Json字符串。

   public virtual void AddHashSetKey(string item, string hashField)
    {
        _redisClient.Hashes.Set(_database, Key, hashField, item);
    }

添加了大约数千个字段后(141988) 我尝试检查哈希键中的字段数,但得到以下错误。不知道我在哪里可以找到更多细节或为什么我会收到此错误?

redis 127.0.0.1:6379[1]> Exists C:
(integer) 1
redis 127.0.0.1:6379[1]> HLEN C:
(error) ERR Operation against a key holding the wrong kind of value
redis 127.0.0.1:6379[1]>

1 个答案:

答案 0 :(得分:0)

嗯,我看过本地,它运作正常。我的主要想法是:

  • 您是否在正确的数据库中? (用redis术语代表select
  • C: 是否有可能非哈希值,因此实际上无法在第一时间设置该值?如果值不是哈希值,则调用任何哈希命令(包括hset)将失败 - 因此如果它已经作为字符串存在:坏事
  • 你在检查正确的钥匙吗? (注意密钥区分大小写)
  • 特别是,我注意到你没有检查错误;由于BookSleeve是完全异步的,因此当您调用Set时,它无法告诉您有关服务器端错误的信息。任何错误都会通过Task API,通过await.Wait().Result.ContinueWith()(或任何其他{}中的任何一个曝光(到达时) {1}}您选择的API)

但在当地:

Task

您可能还想尝试:

redis 127.0.0.1:6379[1]> exists C:
(integer) 1
redis 127.0.0.1:6379[1]> hlen C:
(integer) 1
redis 127.0.0.1:6379[1]> hgetall C:
1) "someField"
2) "{foo:'bar'}"

告诉您redis 127.0.0.1:6379[1]> type C: hash

存储的数据类型