Azure StackExchange Redis客户端字符串集返回false?

Azure StackExchange Redis客户端字符串集返回false?,azure,redis,Azure,Redis,我们已经使用StackExchangeRedis.Net客户端几个月了,没有出现任何问题。我们的日志表明,StringSet最近在一个小时内返回了数千次false,但它再次按预期工作 我到处都找不到假的意思。我假设这意味着该值没有放在缓存中,但如果这是正确的,我该如何说明原因?客户端未引发异常。有人能告诉我描述返回值的API规范以及如何进行故障排除吗 如果这很重要的话,我们将在Azure上与Redis竞争 result = cache.StringSet(fullKey, value, GetC

我们已经使用StackExchangeRedis.Net客户端几个月了,没有出现任何问题。我们的日志表明,StringSet最近在一个小时内返回了数千次false,但它再次按预期工作

我到处都找不到假的意思。我假设这意味着该值没有放在缓存中,但如果这是正确的,我该如何说明原因?客户端未引发异常。有人能告诉我描述返回值的API规范以及如何进行故障排除吗

如果这很重要的话,我们将在Azure上与Redis竞争

result = cache.StringSet(fullKey, value, GetCacheTime(cacheType));
if (!result)
{
    if (_logger != null)
    {
        _logger.LogError( "Failed to Set Cache");
    }
}

简单字符串回复:如果集合正确执行,则为OK。无效答复:a 如果未执行SET操作,则返回Null批量回复 因为用户指定了NX或XX选项,但条件为 没有遇见

虽然看起来您使用的是SETEX(),但您是否将有效的timespan设置为第三个参数

SETEX是原子的,可以通过使用前两个 MULTI/EXEC块中的命令。它是作为一种更快的方式提供的 替代给定的操作序列,因为 当Redis用作缓存时,此操作非常常见。一个错误是 当秒数无效时返回


谢谢你的回复,本。timespan应始终有效。我的GetCacheTime函数根据缓存的内容返回一个静态值。但我会在这里添加一个额外的检查和日志来确保。我们似乎得到了大量的时间(几分钟),其中日志中充满了来自此方法的“假”返回,然后在几天内日志中没有任何问题。这类似于我们有时会连续出现许多Redis连接故障,然后几天内什么都没有。同样,我会添加一个检查以确保时间戳始终有效。谢谢您是否有逐出策略,是否达到内存上限?根据我们的Azure门户网站,我们的内存利用率低于50%。在过去的30天里,问题只出现过一次,以前我们每周都会遇到一次。我预计Azure团队可能正在进行平台改进?还可能显式地测试null:==null,而不是不测试哪些值可能是其他值。您知道这一点吗?在我们的服务中,我们每天都会收到数百条这样的消息,我想可能错误的响应不是错误,但是在.NETAPI上找不到任何文档来验证这一点。这是假的,与过期时间或内存/驱逐政策无关。我们仍然不知道为什么会出现false。虽然已经很晚了,但是如果您尝试使用null值设置同一个键两次,StringSet调用将返回false。我想从技术上讲,您应该使用KeyDelete()操作。