C# SetEntryInHash与SetEntryInHashIfNotExists
我在几个地方读到过Redis是幂等的,所以重复调用C# SetEntryInHash与SetEntryInHashIfNotExists,c#,redis,
servicestack,C#,Redis,
servicestack,我在几个地方读到过Redis是幂等的,所以重复调用SetEntryInHash()不会有任何效果,对吧 使用SetEntryInHashIfNotExists()有什么好的理由吗?这能比盲目调用SetEntryInHash()更快地产生结果吗?意味着您可以多次重复相同的操作,并且会产生相同的副作用。只有像这样的幂等运算才是幂等的,即调用该运算1次或1次以上后,将得到相同的结果,即集合中的单个项 例如,添加到redis列表不是幂等的,因为每个新项都会向redis列表添加一个新项 如果您想知道中的操
SetEntryInHash()
不会有任何效果,对吧
使用SetEntryInHashIfNotExists()有什么好的理由吗
?这能比盲目调用SetEntryInHash()更快地产生结果吗?意味着您可以多次重复相同的操作,并且会产生相同的副作用。只有像这样的幂等运算才是幂等的,即调用该运算1次或1次以上后,将得到相同的结果,即集合中的单个项
例如,添加到redis列表不是幂等的,因为每个新项都会向redis列表添加一个新项
如果您想知道中的操作是如何实现的,只需检查源代码即可。他们分别打电话给和。参考redis中的文档,了解每个操作的行为。@mythz是正确的,有了源代码,可以快速找到真正的答案,更不用说还包括指向redis文档的链接。我自己也对这种差异感到好奇,并认为我会在这里为其他人发布澄清 HSETNX:仅当字段尚不存在时,才在存储在键对值处的哈希中设置字段。若密钥不存在,则创建一个包含散列的新密钥。如果字段已存在,则此操作无效
HSET:设置存储在key to value处的散列中的字段。若密钥不存在,则创建一个包含散列的新密钥。如果该字段已经存在于散列中,它将被覆盖不禁注意到,您仅在20分钟后回答了他的问题,仍然没有得到“答案”点头。算了吧。