gpt4 book ai didi

c# - StackExchange.Redis SetAdd(key, val) 因 key = GUID 而崩溃

转载 作者:IT王子 更新时间:2023-10-29 06:01:05 24 4
gpt4 key购买 nike

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中的崩溃点

enter image description here

...

我在 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";

...

KeyExistsStringIncrementStringSet 与 key = my GUID 配合得很好。

最佳答案

Redis 键是不透明的。该消息:

WRONGTYPE Operation against a key holding the wrong kind of value

仅表示您之前已将数据存储在不是“集合”类型的键中。尝试(在 redis-cli 中):

TYPE "02639d71-0935-35e8-9d1b-9dd1a2a34627"

这将告诉您现有数据的数据类型。如果 key 不存在,或者它存在并且是一个集合,您只能使用SADD

关于c# - StackExchange.Redis SetAdd(key, val) 因 key = GUID 而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com