pika icon indicating copy to clipboard operation
pika copied to clipboard

新版spring redis连接pika报:ERR unknown or unsupported command 'hello"

Open 1970168137 opened this issue 2 years ago • 5 comments

使用spring的RedisTemplate(2.6.2或更高版本2.7.1)连接pika,连接不上,报以下异常: Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown or unsupported command 'hello" 这样的情况有办法解决吗?

补充信息: 1、以上说的新版RedisTemplate是能连接比较旧版本redis的,如 3.0.1 2、我之前使用比较旧版本RedisTemplate,如2.1.x是能连接pika的

1970168137 avatar Jul 05 '22 08:07 1970168137

Redis hello 命令将连接切换到其他协议。Redis 6或更高版本能够支持两种协议,即旧协议RESP2和随Redis 6 RESP3引入的新协议。理论上pika 不支持resp3. 所以hello命令没办法支持。

kernelai avatar Jul 05 '22 08:07 kernelai

但是redis 3.0.1可以支持,我们可以看一下redis低版本针对这个问题是如何解决的。

kernelai avatar Jul 05 '22 08:07 kernelai

首先能否抓取下RedisTemplate 发送的是什么样的命令。我们可以通过monitor pika server 来看到这个命令的内容。然后模拟一个reply。

kernelai avatar Jul 05 '22 08:07 kernelai

首先能否抓取下RedisTemplate 发送的是什么样的命令。我们可以通过monitor pika server 来看到这个命令的内容。然后模拟一个reply。

debug源码的时候看到命令变量这样子:Command [type=HELLO, output=GenericMapOutput [output=null, error='null']]

1970168137 avatar Jul 05 '22 09:07 1970168137

你开一个redis-cli 连接到pika,然后执行monitor命令就可以监控所有到pika的命令。然后用你的客户端连接pika就可以看到命令内容了。

kernelai avatar Jul 05 '22 09:07 kernelai

873a6d7452ef5ea4f899fe69972680eb4fbea685 已经修复

wanghenshui avatar Feb 18 '23 13:02 wanghenshui