之前的业务没有使用 redis 集群, 但使用了 4 实例保存 4 分片, 保存的数据是
实例一, 第一片: hash(key) = 0
实例二, 第二片: hash(key) = 1
实例三, 第三片: hash(key) = 2
实例四, 第四片: hash(key) = 3
现在想搭建一个集群, 对于业务服务不再和某一分片进行绑定, 俺大概想到的思路有 2
但俺看网上的文章, redis 为自动为集群中的机器分配 0-16383 个 slot, 如果是四个主从的话,
0-4xxxx 为第一片
4xxx-8xxx 为第二片
8xxx - 12xxx 为第三片
12xxx - 16xxx 为第四片
然后使用 HASH_SLOT=CRC16(key)mod16384 来计算某一个数据落到哪个片中.
但这和俺现有的 hash 逻辑是不一样的, 所以对于这种方式, 俺想问一下
在创建集群时, 可不可以自定义为实例划分 slot 的逻辑? 计算 hash-slot 的 hash 函数可不可以自定义?
如果方式一不可行, 俺就新搭建一个集群, 然后停服, 把现有数据再 hash 到新的集群中.
关于这种方式, 俺的疑问是
希望有经验的铁子给予指导点拨
1
yc8332 2021-03-10 09:45:08 +08:00
应该只能导数据了。导数据应该不慢吧。。不一定停机吧,先有段时间双写,同时写到旧的和集群。基本上应该不会有什么漏的数据
|
4
VinllenChen 2021-03-10 12:51:24 +08:00
redis-shake
|