C# Redis哈希键出错
我使用Boolsleve c#创建了一个HaskKey,每次我都提供一个唯一的字段,我的项是Json字符串C# Redis哈希键出错,c#,c#-4.0,redis,booksleeve,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) 我试图检查散列键中的字段数,但下面出现错误。不确定在哪里可以
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]>
嗯,我在当地看过,效果很好。我的主要想法是:
- 您是否在正确的数据库中?(
)在redis术语中选择
- 有没有可能
已经有了一个非散列值,因此实际上无法首先设置该值?如果该值不是哈希值,则调用任何哈希命令(包括C:
)都将失败——如果它已经作为字符串存在,也就是说:糟糕的事情hset
- 你在检查正确的钥匙吗?(注意钥匙区分大小写)
- 特别是,我注意到您没有检查错误;由于BookSleeve是完全异步的,所以当您调用
时,它不能告诉您服务器端错误;任何错误都将通过Set
任务
API、通过
等待
、
、.Wait()
或.Result
(或您选择的任何其他.ContinueWith()
任务
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'}"
您可能还想尝试:
redis 127.0.0.1:6379[1]> type C:
hash
它告诉您存储在
C:
中的数据类型。type命令帮助我找出了问题所在。我有名为C:的zset密钥,还有同名的hash,它们以某种方式重叠并发出。我给他们起了不同的名字,结果奏效了。谢谢