
具体场景:
现在偶尔会出现一个问题:执行第 2 步操作时,有时候校验 ticket 会不通过
排查一下: redis 主从偏移有点大,造成主从数据不一样,校验接口走从库时查询不到 ticket 所以校验失败,大概是网络原因?
想到的一个解决方案是,校验接口强制走主库,但是哨兵模式下主库是不固定,有啥办法强制走主库吗( Java 语言的 SDK )?
或者有更好的解决方案?
1 gdcbhtd 2023-11-14 13:30:10 +08:00 伪代码: JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels, config); Jedis jedis = pool.getResource(); // 获取当前主库的地址和端口 HostAndPort currentMaster = pool.getCurrentHostMaster(); // 确保读操作只在主库上执行 jedis.slaveofNoOne(); String ticket = jedis.get("ticket"); jedis.close(); pool.close(); |
2 wenhuacode 2023-11-14 14:15:34 +08:00 那这样搭建主从的意义不就没了, 解决偏移量的问题? |