具体场景:
现在偶尔会出现一个问题:执行第 2 步操作时,有时候校验 ticket 会不通过
排查一下: redis 主从偏移有点大,造成主从数据不一样,校验接口走从库时查询不到 ticket 所以校验失败,大概是网络原因?
想到的一个解决方案是,校验接口强制走主库,但是哨兵模式下主库是不固定,有啥办法强制走主库吗( Java 语言的 SDK )?
或者有更好的解决方案?
|  |      1gdcbhtd      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(); | 
|      2wenhuacode      2023-11-14 14:15:34 +08:00 那这样搭建主从的意义不就没了, 解决偏移量的问题? | 
|      3kikione      2023-11-14 14:27:32 +08:00 是可以读主库的,加一个时间戳标记,1 分钟以内的就读主库。 | 
|  |      4zhongpingjing OP | 
|  |      5zhongpingjing OP @wenhuacode 偏移量的问题有啥解决方法,我没有思路,请教一下 | 
|  |      6qwwe01      2023-11-14 23:00:16 +08:00 如果不想只读主库,有以下建议: 1.排查为何存在数据同步延迟太大的问题,如果解决了能否 100%解决问题 2.如果为了 redis 高可用方案,可以使用 redis cluster 分散服务压力 |