非常令人討厭的崩潰StackExchange.Redis
SetAdd(key, val)
。StackExchange.Redis SetAdd(key,val)使用key = GUID崩潰
我想設置一個程序GUID作爲關鍵的集合。
我發現SetAdd(key, val)
作品與一些GUID,但崩潰與他人(3小時的調試後):
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 @@[email protected][email protected]!
不同的是最後一個字符 「9」 與 「7」
隱而不宣」 t SetAdd
使用本地GUID作爲密鑰?
環境:C#的.NET 4贏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
與關鍵=我的GUID工作做好。
OMG。它崩潰了,因爲我之前已經使用該鍵存儲了一個字符串。誰寫這些錯誤信息?爲什麼消息不是「數據庫已經包含其他元素,使用不同的密鑰!」..非常感謝。 +1 –
@Miroslav「誰寫這些錯誤信息?」該錯誤是逐字從服務器,所以可能Salvatore Sanfilippo :) –
我知道這一點。 :)自1986年以來,我一直在進行編程,但是我被這個例外誤導了(有3天的Redis經驗)。我從'StackExchange.Redis'的角度來搜索關鍵字類型有什麼問題。可憐的我 :) –