Tendis icon indicating copy to clipboard operation
Tendis copied to clipboard

使用Restore命令恢复Redis里Dump下来的数据部分报错

Open AlbertGithubHome opened this issue 3 years ago • 2 comments

问题描述: 使用Restore命令恢复Redis里Dump下来的数据部分报错,并不是所有的Restore命令都报错,使用Restore恢复HASH键时,有一部分提示错误,还有一部分是成功的

敏感数据不便提供,只是想知道这种情况应该怎么处理,报错信息说【Not implemented】指的是什么?

执行命令:

cat hashdata.dat | redis-cli -x RESTORE hashkey 0

错误信息如下:

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. (error) ERR:3,msg:Not implemented

AlbertGithubHome avatar Oct 09 '21 09:10 AlbertGithubHome

这里的主要原因 Redis 支持丰富的数据结构, 并且每种数据结构可能具有不同的编码方式。 比如 Hash 目前有两种编码方式: OBJ_ENCODING_ZIPLISTOBJ_ENCODING_HT 。 这两种编码方式在 Restore 的时候会保存下来, Dump 的时候会分别进行处理。

目前 Tendis 仅支持 OBJ_ENCODING_HT 编码的 Hash, 所以会有 部分 Hash 成功, 部分失败。 为什么会仅支持 OBJ_ENCODING_HT, 减少一部分工作量。 Tendis 作为混合存储的 存储层, 上层 Redis Restore 也仅使用一种编码方式.

修改完善: 在 getDeserializer 函数中增加一种新的类型(RDB_TYPE_HASH_ZIPLIST) 的解码方式。

jingjunLi avatar Nov 02 '21 03:11 jingjunLi

感谢回复,希望这部分尽快完善,期待tendis越来越好

AlbertGithubHome avatar Nov 03 '21 01:11 AlbertGithubHome