王乃峥
王乃峥
这个是协议解析错误,不应该的。
理论上不是,我怀疑是对 redis 在生成 rdb 过程中的协议理解上或者实现上存在问题。 在生成 RDB 过程中,server 会不停地回复 '\n',直到返回数据长度,再之后就是正常的 Bulkbytes Array 的指令了。但是你的报错上看到 `decodeSingleLineBulkBytesArray` ,就是说我开始按照 String 开始解析 Redis 指令,而不是 Bulkbytes Array,说明我在第三步收到的指令格式完全不对。我回去翻翻 Redis 代码再看一下,我怀疑这里面理解上有错误。或者 Bug。但是我很难复现,因为我没环境。
hmm,你确定是 `redis-4.x-cgo` 这个 branch 么? 我仔细翻了一下代码,`RDB_VERSION` 是直接从 redis 4.x 代码里面读的,确定支持 `RDB_VERSION=8` 的,这个错误不应该的。
而且最新的报错方式是,我觉得是应该是你使用的分支不对。 
似乎不太对, v2.0-beta 就应该是 redis-4.x-cgo 这个 branch 的才对。
rdb 版本太高了,当初实现的时候 rdb 没这么高。你可以改改代码直接跳过这个检查试试看,如果没用到新的 feature 的话,可能问题不大? On Mon, Jun 22, 2020 at 11:53 一步 wrote: > after installed the latest release , exec redis-port decode --input=---- > , an error...
> 还有一种思路是更新 redis-port 所依赖的 redis 版本。本身是 cgo 实现的,更新 redis 版本重新编译就好了 还是别冒险了,Redis 升级 RDB 这件事动作有点大。
@jjeejj 在维护。不过一直也没有怎么出现 bug,我以为没有人在用了。
这个东西太陈旧了。为什么不试试最新的 release
而且,在 issue 里面搜 EOF,看 redis log, 能找到很多相似的回答,在 Codis 里面搜 EOF 和 redis-port 相关的。