【发布时间】:2015-06-10 13:08:42
【问题描述】:
我在 C# 中使用 StackExchange.Redis 1.0.450 nuget。 我有像下面这样的代码,它在添加之前检查 redis 中是否存在键 -
if (!Cache.KeyExists(fKey))
{
Cache.StringSet(fKey, Serialize(data));
}
缓存是数据库对象
我在http://redis.io/commands/set 阅读了有关 redis SET 命令的信息 并发现 SET 将覆盖现有的键值,如果它已经存在。 使用 StackExchange.Redis 我可以安全地删除存在检查条件并调用 -
Cache.StringSet(fKey, Serialize(data));
感谢您的回复。
【问题讨论】:
-
是什么让您认为您无法安全地删除它?在一天结束的时候,另一个线程可能已经在检查
KeyExists和StringSet之间的缓存中放了一些东西。 -
如果密钥已经存在,您是要想要覆盖,还是要保留现有值?
-
感谢 James 和 Jon,即使它被覆盖我也很好。谢谢。
-
@VST 我很好奇为什么您首先接受了我的回答,该回答完全回答了您的问题,后来您选择标记另一个。不是为了积分。只是因为我觉得其他答案与您的问题无关:P
-
Matias 我实际上首先接受了当前接受的答案,而不是你的答案。我不知道我不能接受多个答案我认为您的答案也是有用的答案之一并将其标记为正确并意识到其他未选中。关于相关性,我觉得当前的更相关,因为我的问题更多是关于是否需要进行存在检查。您的建议是如何避免存在检查。于是又换了一个。不过感谢您的回复 - 你们所有人。
标签: c# redis stackexchange.redis