Skip to content

pika集群迁移slot命令

chejinge edited this page Jul 23, 2023 · 3 revisions

pika支持codis sync slot迁移设计实现 为兼容pika官方版本,所以pika支持codis slot迁移实现是修改pika实现的,而不是修改pika的存储库nemo实现。 实现方法是,增加slot key(共1024个),set类型,用户发过来的每个key在进行修改操作(set, del, incr, hset, sadd , lpush, zadd......)时,根据slot = crc32(key)%1024计算出该key对应的的slot,然后将该key sadd或者srem到该slot对应的set key;迁移时,指定slot,从该slot spop(由于pika的spop会触发compact,所以是通过sscan和srem实现spop)出一个key然后迁移到目的的pika server。该实现的优点是和官方版本数据兼容,可以直接进行替换升级,不需要洗数据等,回退也方便。不足之处是每次修改操作均要有额外的set操作,降低了性能(大概降低10%~20%),增加了存储(增加30%左右),为了解决性能降低,存储增加的问题,所以增加了pika支持slot迁移的开关,开关关闭时,性能及存储使用和官方版本一致,打开开关时支持slot迁移。

Clone this wiki locally