非常烦人的崩溃StackExchange.Redis
SetAdd(key, val)
。
我想设置一个以程序 GUID 作为键的集合。
我发现(经过 3 小时的调试)SetAdd(key, val)
可以使用某些 GUID,但会与其他 GUID 一起崩溃:
string key = "02639d71-0935-35e8-9d1b-9dd1a2a34629";
const string val = "somevalue";
db.SetAdd(key, val); // <=== Works
key = "02639d71-0935-35e8-9d1b-9dd1a2a34627";
db.SetAdd(key, val); // <=== CRASH @@!!@!@!
区别在于最后一个字符“9”与“7”
不能SetAdd
将本地 GUID 用作密钥?
环境:C# .NET 4 Win 8.1 VS2013
崩溃消息:
An unhandled exception of type 'StackExchange.Redis.RedisServerException' occurred in StackExchange.Redis.dll
Additional information: WRONGTYPE Operation against a key holding the wrong kind of value
坠机点在StackExchange.Redis
...
我在 LINQPad 中测试了这段代码。它在同一个地方崩溃。第一个 GUID 有效,第二个无效。
似乎崩溃不是因为这是启动应用程序 GUID。
使用不同的 GUID 进行更多测试。只有以“7”结尾的崩溃。
key = "02639d71-0935-35e8-9d1b-9dd1a2a34622";
key = "02639d71-0935-35e8-9d1b-9dd1a2a34623";
key = "02639d71-0935-35e8-9d1b-9dd1a2a34624";
key = "02639d71-0935-35e8-9d1b-9dd1a2a34625";
key = "02639d71-0935-35e8-9d1b-9dd1a2a34626";
key = "02639d71-0935-35e8-9d1b-9dd1a2a34627"; // <= crashes
key = "02639d71-0935-35e8-9d1b-9dd1a2a34628";
key = "02639d71-0935-35e8-9d1b-9dd1a2a34629";
...
KeyExists
, StringIncrement
,StringSet
与 key = my GUID 配合使用效果很好。