C# 当哈希键为GUID时,StackExchange.Redis HGET/HGETASYNC返回null
我遇到了一些问题,我相信这可能是StackExchange.Redis库中的一个错误C# 当哈希键为GUID时,StackExchange.Redis HGET/HGETASYNC返回null,c#,.net,redis,.net-4.5,stackexchange.redis,C#,.net,Redis,.net 4.5,Stackexchange.redis,我遇到了一些问题,我相信这可能是StackExchange.Redis库中的一个错误 当我创建一个以键为GUID的散列时,.HashGet或HashGetAsync都将返回一个null值,而当我尝试使用redis cli获取相同的散列键时,我能够成功地检索散列值。从您的注释中,这里的GUID似乎是散列字段的子键。从根本上说,它运转良好;见: static void Main() { int i = new Random().Next(); Console.WriteLine("&
当我创建一个以键为GUID的散列时,
.HashGet
或HashGetAsync
都将返回一个null
值,而当我尝试使用redis cli
获取相同的散列键时,我能够成功地检索散列值。从您的注释中,这里的GUID似乎是散列字段的子键。从根本上说,它运转良好;见:
static void Main()
{
int i = new Random().Next();
Console.WriteLine("> {0}", i);
Guid guid = Guid.NewGuid();
using (var muxer = ConnectionMultiplexer.Connect("127.0.0.1:6379"))
{
var db = muxer.GetDatabase();
db.KeyDelete("foo");
db.HashSet("foo", guid.ToByteArray(), i);
}
using (var muxer = ConnectionMultiplexer.Connect("127.0.0.1:6379"))
{
var db = muxer.GetDatabase();
var val = (int)db.HashGet("foo", guid.ToByteArray());
Console.WriteLine("< {0}", val);
}
}
实际输出:
33221100-5544-7766-8899-AABBCCDDEEFF
请注意,第一组、第二组和第三组是相反的。如果这是问题所在,那就怪我!然而,我强烈怀疑前两种可能性更大。要进行调查,最好在比较两个不同系统的工作时,以
monitor
模式运行redis cli
。您有确切的代码示例吗?没有从Guid
到RedisKey
的隐式转换,所以我很好奇这是通过字符串还是通过字节[]
,以及这两种方式中的哪一种:你到底是如何做的。我还想知道您是否可以在一个单独的redis cli实例上运行MONITOR
,以查看这两种方法的问题。@marcGravel它的字符串。我将直接尝试使用重新键
,看看会发生什么我的第一个猜测是:格式化;大小写、间距、连字符、,etc@MarcGravell使用Guid.ToString或Guid.ToByteArray的Uhm将导致null。代码是这样的:db.HashGetAsync(string.Format(“whatever:licensing:products:{0}:features:{1}:all”,productId,featureId),id.ToByteArray())
@marcGravel实际上我正在复制粘贴键“quick watching”string.format
到redis cli
的结果,这样我就可以得到哈希值。我将把所有内容放在一起,检查您是否建议可以解决此问题!!提前感谢您的努力!我到处都在做Guid.ToString()
。顺便说一句,我认为实际上问题更多地与重新键有关,而不是与某个散列中的子键有关。我试着做了监视器
的事情,它输出了正确的命令。毕竟,如果我将粘贴命令复制到redis cli
并执行它,我就可以检索数据!!!图书馆里似乎发生了一些奇怪的事情,我错了吗?天哪!!!!!!!!!!!!你知道什么是#@3!!!问题在具体的方法中,我没有选择正确的Redis DB!!当我运行测试时,我选择了db 1
而不是0
,并且创建键的方法正确地指向1
,而检索键的方法指向0
!!!!!!!!啊。。。嗯,谢谢你的努力…@Matíasfidemrazer-hah!很公平——“错误的数据库”并没有立即出现在我的脑海中,但显示了可重复样本的重要性;P
33221100-5544-7766-8899-AABBCCDDEEFF