2013-09-03 4 views
1

밖으로 erroring 나는 Boolsleve의 C#을, 내가 유일한 필드마다 제공하고 내 항목이 JSON 문자열 인을 사용하여 HaskKey를 만들었습니다.레디 스 HashKey는

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

답변

0

글쎄, 나는 로컬 봤는데, 그것은 잘 작동합니다. 내가 가지고있는 주된 생각 :

  • 올바른 데이터베이스에 있습니까? (레디 스 조건에서 select)
  • 그것은 C:이미 이외 해시 값을 가지고, 따라서, 실제로 값이 처음에 설정 될 수있다? 값이 해시가 아닌 경우 실패합니다 (hset 포함) 해시 명령을 호출 - 그래서 이미 문자열로 존재하는 경우 : 나쁜 일
  • 올바른 키를 확인하는거야? 특히
  • , 난 당신이 오류를 확인하지 않습니다 통지 (키는 대소 문자를 구분 것을주의) BookSleeve가 완전히 비동기이기 때문에 Set을 호출하면 서버 측 오류에 대해 알 수 없습니다. 오류가 어떤 경유하여 Task API를 통해 (도착하면) 노출 될 await, .Wait(), .Result 또는 .ContinueWith() (또는 원하는 다른 Task API)

그러나 로컬 :

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

또한 시도 할 수 있습니다 : 012,362,311에 저장되는 데이터의 유형을 알려줍니다

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

+0

유형 명령을 내 문제가 무엇인지 알아낼 수있었습니다. 나는 C :의 이름으로 zset 키를 가지고 있었고 같은 이름을 가진 해쉬를 어떻게 든 겹치고 발행했다. 나는 그들에게 다른 이름을 주었고 효과가 있었다. 감사 –