Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SetEntryInHash与SetEntryInHashIfNotExists_C#_Redis_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Redis,servicestack" /> servicestack,C#,Redis,servicestack" />

C# SetEntryInHash与SetEntryInHashIfNotExists

C# SetEntryInHash与SetEntryInHashIfNotExists,c#,redis,servicestack,C#,Redis,servicestack,我在几个地方读到过Redis是幂等的,所以重复调用SetEntryInHash()不会有任何效果,对吧 使用SetEntryInHashIfNotExists()有什么好的理由吗?这能比盲目调用SetEntryInHash()更快地产生结果吗?意味着您可以多次重复相同的操作,并且会产生相同的副作用。只有像这样的幂等运算才是幂等的,即调用该运算1次或1次以上后,将得到相同的结果,即集合中的单个项 例如,添加到redis列表不是幂等的,因为每个新项都会向redis列表添加一个新项 如果您想知道中的操

我在几个地方读到过Redis是幂等的,所以重复调用
SetEntryInHash()
不会有任何效果,对吧

使用
SetEntryInHashIfNotExists()有什么好的理由吗
?这能比盲目调用SetEntryInHash()更快地产生结果吗?

意味着您可以多次重复相同的操作,并且会产生相同的副作用。只有像这样的幂等运算才是幂等的,即调用该运算1次或1次以上后,将得到相同的结果,即集合中的单个项

例如,添加到redis列表不是幂等的,因为每个新项都会向redis列表添加一个新项


如果您想知道中的操作是如何实现的,只需检查源代码即可。他们分别打电话给和。参考redis中的文档,了解每个操作的行为。

@mythz是正确的,有了源代码,可以快速找到真正的答案,更不用说还包括指向redis文档的链接。我自己也对这种差异感到好奇,并认为我会在这里为其他人发布澄清

HSETNX:仅当字段尚不存在时,才在存储在键对值处的哈希中设置字段。若密钥不存在,则创建一个包含散列的新密钥。如果字段已存在,则此操作无效


HSET:设置存储在key to value处的散列中的字段。若密钥不存在,则创建一个包含散列的新密钥。如果该字段已经存在于散列中,它将被覆盖

不禁注意到,您仅在20分钟后回答了他的问题,仍然没有得到“答案”点头。算了吧。