记一次Redis云服务命令兼容性问题
先贴一下报错 Caused by: org.redisson.client.RedisException: ERR request failed to route, command 'wait'. channel: [id: 0x435ad7b4, L:/10.0.0.34:59660 - R:10.0.0.16/10.0.0.16:7000] command: (WAIT), promise: java.util.concurrent.CompletableFuture@49043da0[Not completed], params: [1, 1000] at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:370) at org.redisson.client.handler.CommandDecoder.decodeCommandBatch(CommandDecoder.java:271) at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:210) at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:137) at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:113) 使用环境 JDK17 redisson3.17.5版本 腾讯云Redis5.0内存版(集群架构) 业务代码 RReadWriteLock readWriteLock = redissonClient.getReadWriteLock(RedisKey.REDISSON_LOCK_PREFIX + No); RLock rLock = readWriteLock.writeLock(); try { rLock.lock(); //处理业务 修改订单状态 记录支付日志 } finally { rLock.unlock(); } 排查过程 1.测试环境是单机版,生产环境是集群,怀疑是配置有误。 后将测试环境的redis换成手动搭建的集群环境,发现并没有问题 2.怀疑是云服务的redis有些配置,和自己搭建的不一致,但是并没有具体方向 3.进入redis的GitHub查看是否有相似问题 4.在Issues 中发现了同样的报错 他用的阿里云的Redis云服务,因为用的是代理模式,所以会有此问题。相关地址 腾讯云使用的也是代理模式,所以我觉得突破点,就是这儿。 5.随后找到腾讯云的文档,发现是支持的。相关文档 6.因为文档是最近更新的,怀疑是不是某个新版本才可以 ...