RedisFullCheck
RedisFullCheck copied to clipboard
redis-full-check is used to compare whether two redis have the same data. Support redis version from 2.x to 7.x (Don't support Redis Modules).
在 speed.go 这个文件中,定义了一个 Qos 结构用于限速。其中启动了一个定时器,每秒往一个 chan 中放 `qps` 个 token。因为第一次放 token 是在一秒之后,这导致对某个 db 执行 VerifyAllKeyInfo 之前需要等待 1 秒,这大大拖慢了 check 的速度。 相关代码如下: ```go // limit qps qos := common.StartQoS(conf.Opts.Qps) for keyInfo...
-s, --source=SOURCE 源redis库地址(ip:port),如果是集群版,那么需要以分号(;)分割不同的db,只需要配置主或者从的其中之一。例如:10.1.1.1:1000;10.2.2.2:2000;10.3.3.3:3000。 对于集群版check,文档中写的是只需要配置主或者从的其中之一,容易产生误解,让人认为只配置集群的某一个节点就可以,然而这里必须配置全部的master或者全部的slave,否则会任务只执行在配置节点上导致漏检,希望这里能够描述更清晰一些
这里应该改成 specialErrorPrefix != "" && strings.HasPrefix(err.Error(), specialErrorPrefix) 吧 https://github.com/alibaba/RedisFullCheck/blob/5b294adc5d79868c25f840fd6ab9eddb6308f6db/src/full_check/client/client.go#L234
大佬,Redis-Shake似乎提供了ARM版本,Redis-Full-Check有没有这方面的计划呢?
- use go mod to manage dependency - remove govendor - simplify bool expression as suggested by gopls
数据校验报错
报错信息: panic: run PipeRawCommand with commands[strlen ***(key名); strlen ***(key名);...(类似的一堆)] return element[WRONGTYPE Operation against a key holding the wrong kind of value] isn't type int64[redis.redisError] goroutine 40587 [running]: full_check/checker.(*VerifierBase).FetchTypeAndLen.func2(0xc4202c6000, 0xc420739800, 0xf7,...
full_check.go:232]: get keyspace failed[ERR backend server 'Keyspace' not found] panic: get keyspace failed[ERR backend server 'Keyspace' not found] 如上,用最新版本检测两个codis集群时,遇到上述错误,请教如何解决?
建议能自定义源redis的db几比对目标reids的db几。比如源db0来比较目标db7,而忽略其他db比较,只比较目标两个db