Tendis
Tendis copied to clipboard
使用Restore命令恢复Redis里Dump下来的数据部分报错
问题描述: 使用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
这里的主要原因 Redis 支持丰富的数据结构, 并且每种数据结构可能具有不同的编码方式。 比如 Hash 目前有两种编码方式: OBJ_ENCODING_ZIPLIST
和 OBJ_ENCODING_HT
。 这两种编码方式在 Restore 的时候会保存下来, Dump 的时候会分别进行处理。
目前 Tendis 仅支持 OBJ_ENCODING_HT
编码的 Hash, 所以会有 部分 Hash 成功, 部分失败。
为什么会仅支持 OBJ_ENCODING_HT
, 减少一部分工作量。 Tendis 作为混合存储的 存储层, 上层 Redis Restore 也仅使用一种编码方式.
修改完善: 在 getDeserializer 函数中增加一种新的类型(RDB_TYPE_HASH_ZIPLIST) 的解码方式。
感谢回复,希望这部分尽快完善,期待tendis越来越好