From 6cfb386eca76cfbd8ba857f296c5276259b5b589 Mon Sep 17 00:00:00 2001 From: liyaojie Date: Fri, 8 Sep 2023 21:28:22 +0800 Subject: [PATCH] update the doc for the supportmend of redis module type Signed-off-by: liyaojie --- docs/.vitepress/config.ts | 6 ++++ docs/src/public/module-supported.jpg | Bin 0 -> 66224 bytes docs/src/zh/others/module-supported.md | 40 +++++++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 docs/src/public/module-supported.jpg create mode 100644 docs/src/zh/others/module-supported.md diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 858d3b78..24333d56 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -49,6 +49,12 @@ export default defineConfig({ { text: '最佳实践', link: '/zh/function/best_practices' } ] }, + { + text: 'others', + items: [ + { text: 'redis modle 支持', link: '/zh/others/module-supported' }, + ] + }, // { // text: '进阶用法', // items: [ diff --git a/docs/src/public/module-supported.jpg b/docs/src/public/module-supported.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80862a24cc482d79c48f76df2a219555d013990a GIT binary patch literal 66224 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 literal 0 HcmV?d00001 diff --git a/docs/src/zh/others/module-supported.md b/docs/src/zh/others/module-supported.md new file mode 100644 index 00000000..3ca89bbb --- /dev/null +++ b/docs/src/zh/others/module-supported.md @@ -0,0 +1,40 @@ +--- +outline: deep +--- + + +# 介绍 +可以为 RedisShake 贡献代码支持其它自定义 module 类型 + + +# 核心流程 +相关代码在`internal\rdb`目录下,如需要支持其它 redis module 类型,可分解为以下三个步骤—— + +- 从rdb文件中正确读入 + - RedisShake 中已经 对 redis module 自定的几种类型进行了封装,从 rdb 文件进行读取时,可直接借助于已经封装好的函数进行读取(`internal\rdb\structure\module2_struct.go`) +- 构建一个合适的中间数据结构类型,用于存储相应数据(key + value) +- 大小key 的处理 + - 小key + - 在实际工作中,执行`LoadFromBuffer`函数从rdb读入数据时,其对应的 value 值会流动到两个地方,一个是直接存储在缓存区中一份,用于小 key 发送时直接读取(与`restore`命令有关),一个流动到上述的中间数据结构中,被下述的 `rewrite`函数使用 + - 大key + - 借助于` rewrite` 函数,从上述的中间数据结构中读取,并拆分为对应的命令进行发送 + +![module-supported.jpg](/public/module-supported.jpg) + + +# 其它 +## 补充命令测试 +为了确保正常,需要在` tests\helpers\commands` 里面添加对应 module 的命令,来测试相关命令可以在 rdb、sync、scan 三个模式下工作正常。测试框架具体见[pybbt](https://pypi.org/project/pybbt/),具体思想——借助于redis-py 包,对其进行封装,模拟客户端发送命令,然后比对实际的返回值与已有的返回值。 + +## 补充命令列表 +RedisShake 在针对大 key 进行传输时,会查命令表格`RedisShake\internal\commands\table.go`,检查命令的合规性,因此在添加新 module 时,需要将对应的命令加入表格,具体可参照`RedisShake\scripts`部分代码 +## 补充 ci +在 ci 测试中,需要添加对自定义 module 的编译,具体可见` ci.yml` 内容 + + + +# 已支持的 redis module 列表 + +- [TairHash](https://github.com/tair-opensource/TairHash) +- [TairString](https://github.com/tair-opensource/TairString) +- [TairZset](https://github.com/tair-opensource/TairZset)