RedisCache StackExchange客户端 - IDatabase.KeyDeleteAsync - 返回false的情况需要的场景

4

我们正在使用Stackexchange客户端连接Redis。Redis有一个方法IDatabase.KeyDeleteAsync,它返回布尔值。在哪些情况下该方法会返回false?

1个回答

3
当键不存在时(当DEL命令返回0时),它将返回false。
例如:
var ctx = ConnectionMultiplexer.Connect("localhost:6379");
var db = ctx.GetDatabase();

db.StringSet("key", "value");
var @true = db.KeyDelete("key");
var @false = db.KeyDelete("key");

你可以查看DemandZeroOrOneProcessor的源代码,其中包含将结果设置为true(当命令返回1时)和false(当命令返回0时)的逻辑。

还有其他情况会返回false吗? - Pratik Mehta
根据 https://redis.io/commands/del ,Redis命令本身如果键不存在则返回0,库代码将其转换为false https://github.com/StackExchange/StackExchange.Redis/blob/master/src/StackExchange.Redis/ResultProcessor.cs#L400 - stefann
我已经在本地检查过了,如果使用FireAndForget,似乎总是会得到false作为结果。await db.KeyDeleteAsync(key, CommandFlags.FireAndForget) - unsafePtr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接