当前位置: 首页 > 知识库问答 >
问题:

SETNX是否总是在哨兵系统中的redis master上执行?

常小白
2023-03-14
  1. 如果SETNX命令(NX test和SET)保证在“redis Sentinel system”上下文中的redis master上执行
  2. 如果在“Redis Sentinel System”上下文中保证它是原子的?

在阅读文档后,我的理解是对两者都是肯定的,因为:

  • 公元。1只有主程序可以接受写操作,并且由于SETNX有一个set/write组件,它必须转到主程序(因为所有的写操作都通过主程序)。
  • 公元。2由于该集合将在主服务器上执行,因此只有在主服务器上检查NX部分才有意义(从不查询从服务器),否则将不必要地耗费时间,并可能破坏原子性。

有人能百分之百肯定地证实吗,也许可以给我一些文件来消除我的疑虑。提前感谢!

共有1个答案

丘华翰
2023-03-14

我可以用99.97%(3西格玛)的确定性来证实上述情况。

Ad.1只有主服务器可以接受写操作,并且由于SETNX有一个set/write组件,所以它必须转到主服务器(因为所有的写操作都通过主服务器)。

正确,不包括故意启用写入副本并连接到副本的情况。

 类似资料:
  • 主要内容:一、哨兵,二、源码分析,三、总结一、哨兵 Sentinel(哨兵),听名字大家都应该想得到这个家伙是做什么的。在redis的应用中,有单机模式、主从模式、哨兵模式和集群模式,其实你从它的发展就可以看出来,redis是从一个简单的应用开始,不断的壮大,从单点到分布式,从简单的主从备份以及初始的哨兵监控,再到可以看成把二者合成的集群模式,除了是应用场景的变化,更多的是为了提高安全性和高可用性。网上有很多人问哨兵和集群有啥不一样,其实

  • Redis 哨兵(Sentinel)是 Redis 的高可用性(Hight Availability)解决方案:由一个或多个 Sentinel 实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。 Sentinel

  • 问题内容: 考虑到此代码,我是否可以绝对确定该块始终执行,无论它是什么? 问题答案: 是的,将在执行或代码块后调用。 唯一不会被调用的时间是: 如果您调用 System.exit() 如果您调用 Runtime.getRuntime().halt(exitStatus) 如果JVM首先崩溃 如果JVM在try或catch块中达到了无限循环(或其他不间断,不终止的语句) 操作系统是否强行终止了JVM

  • 我正在与一个远程合作伙伴开发一个Laravel项目。 我没有安装mcrypt,所以每次需要使用composer时,我都会通过别名引用php: 这是一个很好的修复,直到我的远程朋友安装了哨兵软件包,这是我无法做到的。 使用另一个stackoverflow线程,我能够使用mcrpyt引用正确版本的php,更新composer并安装sentry。 我的问题是: Sentry在我搭档的本地主机上工作,我将

  • Redis4.x是否兼容使用Sentinels运行TLS?我发现一些线程提到对TLS的支持将被添加到3.2中,但没有任何证实。

  • 每一个哨兵都可以连接到我的主人,并可以看到奴隶。它们能够独立地检测主从是否倒下。问题是哨兵们无法探测到对方。 我已经验证了每个哨兵都像预期的那样向通道发布消息,但似乎没有一个哨兵真正从其他哨兵通道接收消息。 我怎么让哨兵们见面?