2013-09-03 6 views
1

J'ai créé un HaskKey en utilisant Boolsleve C#, Je fournis un champ unique à chaque fois et mon article est Json chaîne.Redis HashKey erreur hors

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

Après avoir ajouté sur des milliers champs (141988) je tente de vérifier le nombre de champs dans la clé de hachage, mais obtenir l'erreur ci-dessous. Je ne sais pas où je peux trouver plus de détails ou pourquoi je reçois cette erreur?

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]> 

Répondre

0

Eh bien, j'ai regardé localement, et cela fonctionne très bien. Les pensées principales que j'ai:

  • êtes-vous dans la bonne base de données? (select en termes redis)
  • est-il possible que C:avait déjà une valeur de non-hachage, et donc la valeur n'a pas pu réellement être définie en premier lieu? Appeler une commande de hachage (y compris hset) échouera si la valeur n'est pas un hachage - donc si elle existe déjà en tant que chaîne: mauvaises choses
  • vérifiez-vous la bonne clé? (notant que les touches sont sensibles à la casse)
  • en particulier, je remarque que vous n'êtes pas vérifié pour les erreurs; Puisque BookSleeve est entièrement asynchrone, il ne peut pas vous parler d'erreurs côté serveur lorsque vous appelez Set; toute erreur sera exposé (quand il arrive) via l'API Task, via l'une des await, .Wait(), .Result ou .ContinueWith() (ou tout autre Task API de votre choix)

Mais localement:

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'}" 

vous pouvez également essayer:

redis 127.0.0.1:6379[1]> type C: 
hash 

qui vous indique quel type de données sont stockées à C:

+0

La commande de type m'a aidé à comprendre quel était mon problème. J'ai eu zset clés par le nom de C: ainsi que hash avec le même nom en quelque sorte, ils se chevauchent et casued émis. Je leur ai donné différents noms et cela a marché. Merci –